我正在尝试创建一个可以将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 ) );
}
}
然而它似乎进入无限循环,后退按钮不起作用,然后它说“没有响应”并提供强制关闭。
在这种情况下,任何想法是什么是在身体中循环的正确方法?
谢谢!
答案 0 :(得分:6)
正如我的评论所述 - 循环应该如下:
for ( Body b = world.getBodyList(); b!=null; b = b.getNext() )
{
Log.e("xy", String.valueOf(b.getPosition().x)+ " " + String.valueOf(b.getPosition().y));
}
答案 1 :(得分: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();
}
}