3

JBox2dの世界のオブジェクトをキャンバスに描画するクラスを作成しようとしています。

更新時に私は

render.draw(canvas,world);

これは、ワールドとキャンバスを描画クラスに渡します。描画クラスは、ワールドのオブジェクトを循環してキャンバスに描画することになっています。

public void draw(Canvas canvas, World world)
{

    canvas.drawColor(0xFF6699FF);

    for ( Body b = world.getBodyList(); b!=null; b.getNext() )
    {
        Log.e("xy", String.valueOf( b.getPosition().x )+" "+String.valueOf( b.getPosition().y )  );
    }

}

それでも、無限ループに入っているようで、戻るボタンが機能せず、「応答していません」と表示され、強制終了するように提案されます。

この場合、体を循環する正しい方法は何ですか?

ありがとう!

4

2 に答える 2

6

私のコメントで述べたように、ループは次のようになります。

for ( Body b = world.getBodyList(); b!=null; b = b.getNext() )
{
    Log.e("xy", String.valueOf(b.getPosition().x)+ " " + String.valueOf(b.getPosition().y));
}
于 2012-05-09T22:54:13.037 に答える
0

これは 1 つの方法です。ワールド ボディ リストからさまざまな形状 (多角形/円) にアクセスできます。

public void draw(Canvas canvas){
    Body body = world.getBodyList();
    while(body != null){
        Fixture fixture = body.getFixtureList();
        while(fixture != null){
            ShapeType type = fixture.getType();
            if(type == ShapeType.POLYGON){
                PolygonShape shape = (PolygonShape)fixture.getShape();
                // draw shape
            }else if(type == ShapeType.CIRCLE){
                CircleShape shape = (CircleShape)fixture.getShape();
                // draw shape
            }
            fixture = fixture.getNext();
        }
        body = body.getNext();
    }       
}
于 2013-05-07T10:16:38.160 に答える