Canvas 仅在画布上绘制一个box2d对象

Canvas 仅在画布上绘制一个box2d对象,canvas,box2d,Canvas,Box2d,我正在尝试使用Box2dWeb在画布中绘制几个球对象,而不使用debugDraw()。我正在使用以下代码绘制圆: function drawObjects() { node = world.GetBodyList(); while (node) { var currentBody = node; node = node.GetNext(); position = currentBody.GetPosit

我正在尝试使用Box2dWeb在画布中绘制几个球对象,而不使用debugDraw()。我正在使用以下代码绘制圆:

function drawObjects()
{
     node = world.GetBodyList();
     while (node) {
            var currentBody = node;
            node = node.GetNext();
             position = currentBody.GetPosition();
            if (currentBody.GetType() == b2Body.b2_dynamicBody) 
            {
                canvas.width=canvas.width;
                context.arc(position.x*30,position.y*30,shape.GetRadius()*20,0,7);
                context.stroke();
                context.fill();
            }
            }
}

当我使用debugDraw时,我能够看到我添加的两个圆形对象。但当尝试使用画布方法时,仅显示一个圆形对象。。有没有关于我错在哪里的指示?此外,我觉得我在理解我使用的box2d方法时可能犯了一些根本性的错误。

您每次都在用这一行清除画布:

canvas.width=canvas.width

在顶部,在while循环之外执行此操作


(更改画布宽度,即使更改为相同的值,也会清除画布。这通常也是清除画布的最快方法,这就是为什么您会看到它被大量使用的原因)

您每次都使用以下行清除画布:

canvas.width=canvas.width

在顶部,在while循环之外执行此操作


(更改画布宽度,即使更改为相同的值,也会清除画布。这通常也是清除画布的最快方法,这就是为什么您会看到它被大量使用的原因)

事实上,
clearRect
在今天的大多数浏览器中速度更快,也是预期的方法@bennedich啊,谢谢你。我上次测试它已经有一段时间了。事实上,
clearRect
在今天的大多数浏览器中速度更快,也是预期的方法@bennedich啊,谢谢你。我上次测试已经有一段时间了。