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

这是一种方法。您可以通过世界实体列表访问您的不同形状(多边形/圆形):

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 回答