1

debugDraw() を使用せずに、Box2dWeb を使用してキャンバスにいくつかのボール オブジェクトを描画しようとしています。次のコードを使用して円を描画しています。

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 オブジェクトを表示できます。しかし、キャンバスメソッドを使用しようとすると、円オブジェクトの1つだけが表示されます..私が間違っている場所に関するポインタはありますか? また、使用している box2d メソッドの理解において、何か根本的に間違っている可能性があると感じています。

4

1 に答える 1

1

この行で毎回キャンバスをクリアしています:

canvas.width=canvas.width;

whileループの外側の上部でそれを行います。

(キャンバスの幅を同じ値に変更すると、キャンバスがクリアされます。多くの場合、これもクリアするのに最も速い方法です。そのため、かなり使用されていることがわかります)

于 2012-10-14T09:01:50.820 に答える