Я все ще новачок у програмах java та android, і у мене виникають стільки проблем з видаленням об'єкта, коли відбувається зіткнення. Я переглянув Інтернет і виявив, що я ніколи не повинен обробляти видалення тіл BOX2D під час виявлення зіткнень (слухач контактів), і я повинен додати свої об’єкти до масиву архіву та встановити змінну в розділі "Дані користувачів" тіла, щоб видалити чи не впоратись і обробляти видалення в оброблювачі оновлень. Так я і зробив це: спочатку я визначаю два списки масивів: один для обличчя та один для тіл:
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);
Тепер я додаю слухача контактів і обробника оновлень у он-лайнсцену таким чином:
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, тож, який правильний спосіб додати обробник оновлень і куди мені його додати. Будь-які інші поради для цього були б чудовими. Заздалегідь спасибі.