Я все еще новичок в программировании на Java и Android, и у меня так много проблем с удалением объекта при столкновении.Я посмотрел в Интернете и обнаружил, что никогда не должен обрабатывать удаление тел BOX2D во время обнаружения столкновений (прослушиватель контактов), и мне нужно добавить свои объекты в массив данных и установить переменную в разделе «Пользовательские данные» тела для удаления или обработки и обработкидействие удаления в обработчике обновлений.Итак, я сделал это: сначала я определяю два списка ArrayList, один для лиц и один для тел:
ArrayList<Sprite> myFaces = new ArrayList<Sprite>();
ArrayList<Body> myBodies = new ArrayList<Body>();
Затем, когда я создаю лицо и соединяю это лицо с его телом, я добавляю их в свои списки ArrayLists следующим образом:
face = new AnimatedSprite(pX, pY, pWidth, pHeight, this.mBoxFaceTextureRegion);
Body BoxBody = PhysicsFactory.createBoxBody(mPhysicsWorld, face, BodyType.DynamicBody, objectFixtureDef);
mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(face, BoxBody, true, true));
myFaces.add(face);
myBodies.add(BoxBody);
теперь я добавляю прослушиватель контактов и обработчик обновлений в onloadscene следующим образом:
this.mPhysicsWorld.setContactListener(new ContactListener() {
private AnimatedSprite face2;
@Override
public void beginContact(final Contact pContact) {
}
@Override
public void endContact(final Contact pContact) {
}
@Override
public void preSolve(Contact contact,Manifold oldManifold) {
}
@Override
public void postSolve(Contact contact,ContactImpulse impulse) {
}
});
scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() { }
@Override
public void onUpdate(final float pSecondsElapsed) {
}
});
Я планирую определить, какие два тела столкнулись в прослушивателе контактов, проверивпеременную из раздела пользовательских данных тела, найдите их номера в списке массивов и, наконец, используйте обработчик обновлений для удаления этих тел.
Вопросы: правильно ли я использую массив?и в слушателе столкновений, как извлечь объект, который столкнулся из списка массивов?Как добавить переменную в Данные пользователя (код, пожалуйста).Я попытался удалить тело в этом обработчике обновлений, но он по-прежнему выдает исключение NullPointerException, так как правильно добавить обработчик обновлений и где мне его добавить?Любые другие советы, чтобы сделать это было бы здорово.Заранее спасибо.