Java ve android programlamaya hala yeniyim ve çok fazla sorun yaşıyorum Çarpışma olduğunda bir nesneyi kaldırma. Web'e baktım ve çarpışma tespiti (kişi dinleyicisi) sırasında asla BOX2D gövdelerinin kaldırılmasıyla uğraşmamam gerektiğini buldum ve nesnelerimi bir arrayliste eklemeli ve silmek veya işlemek ve işlemek için gövdenin Kullanıcı Verileri bölümünde bir değişken ayarlamalıyım bir güncelleme işleyicisindeki kaldırma eylemi. Ben de bunu yaptım: İlk olarak biri ArrayLists'i biri yüzler diğeri de bedenler için tanımlıyorum:
ArrayList<Sprite> myFaces = new ArrayList<Sprite>();
ArrayList<Body> myBodies = new ArrayList<Body>();
Sonra bir yüz oluşturup bu yüzü vücuduna bağladığımda bunları ArrayList'lerine şöyle ekliyorum:
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);
şimdi bir kişi dinleyicisi ve onloadscene'de böyle bir güncelleme işleyicisi ekliyorum:
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) {
}
});
Planım, gövdenin kullanıcı verileri bölümündeki bir değişkeni kontrol ederek kişi dinleyicisinde hangi iki gövdenin çarpıştığını tespit etmek, sayılarını dizi listesine almak ve son olarak bu gövdeleri kaldırmak için güncelleme işleyicisini kullanmaktır.
Sorular: Arraylist'i doğru kullanıyor muyum? Kullanıcı Verilerine bir değişken nasıl eklenir (lütfen kod). Bu güncelleme işleyicisindeki bir gövdeyi kaldırmayı denedim, ancak yine de bana NullPointerException atıyor, bu yüzden bir güncelleme işleyicisi eklemenin doğru yolu nedir ve nereye eklemeliyim. Bunu yapmak için başka herhangi bir tavsiye harika olurdu. Şimdiden teşekkürler.