Intereting Posts
Эмулятор Android 4.0.3 не отображает экранную клавиатуру Изменение разделителя с помощью setDivider в ListActivity без пользовательского ListView? Как выполнить проверку подлинности HTTP в android? Как разрешить ошибки пути сборки? Как применить пользовательский образ spinner для выполнения диалога в android Фоновая служба убивается в андроиде Android: как установить APK инструментария на AVD в безголовом хосте Закончить дочернюю активность, когда родительская активность прекращается Справка относительно события onClick () для элемента пользовательской раскладки ListView Модифицировать пример 2, но ошибка дисплея GsonConverterFactory «Не удается разрешить символ» Curiosity Down / Up Swipe Анимация и фрагменты Population Based On posts date Разархивируйте ZIP-файл на SD-карте в приложении Android Как добавить горизонтальный RecyclerView в элемент списка TLS с расширением имени имени сервера (RFC 3546) в Android Альтернатива выбору устройства каждый раз, когда я запускаю приложение для Android?

JBox2d – world.getBodyList () переходит в бесконечный цикл

Я пытаюсь создать класс, который бы нарисовал объекты моего мира 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 ) ); } } 

Но, похоже, он переходит в бесконечный цикл, кнопка «Назад» не работает, тогда она говорит «не отвечает» и предлагает принудительно закрыть.

Любые идеи, каков правильный способ циклического перемещения тел в этом случае?

Благодаря!

    Как уже упоминалось в моем комментарии, цикл должен быть следующим:

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

    Это один из способов сделать это. Вы получаете доступ к своим различным формам (полигон / круг) через список мировых организаций:

     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(); } }