在画布上只绘制一个box2d对象

时间:2012-10-14 06:57:58

标签: canvas box2d

我正在尝试使用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时,我能够看到我添加的两个Circle对象。但是当尝试使用canvas方法时,只显示了一个圆形对象..任何关于我出错的指针?此外,我觉得在理解我正在使用的box2d方法时,我可能正在做一些根本错误的事情。

1 个答案:

答案 0 :(得分:1)

您每次使用此行清除画布:

canvas.width=canvas.width;

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

(更改画布宽度,即使是相同的值,也会清除画布。它通常也是清除它的最快方法,这就是为什么你看到它使用了很多)