ฉันยังใหม่กับการเขียนโปรแกรมจาวาและ Android และฉันมีปัญหามากการลบวัตถุเมื่อเกิดการชน ฉันมองไปรอบ ๆ เว็บและพบว่าฉันไม่ควรจัดการกับการลบเนื้อหาของ BOX2D ในระหว่างการตรวจจับการชน (ผู้ฟังรายชื่อผู้ติดต่อ) และฉันควรเพิ่มวัตถุของฉันลงในรายการอาร์เรย์และตั้งค่าตัวแปรในส่วนข้อมูลผู้ใช้ของร่างกายเพื่อลบหรือไม่ แอ็คชันการลบในตัวจัดการอัพเดต ดังนั้นฉันจึงทำสิ่งนี้: ก่อนอื่นให้นิยาม ArrayLists สองอันสำหรับใบหน้าและอีกอันสำหรับร่างกาย:
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) {
}
});
แผนของฉันคือการตรวจสอบว่าสองร่างใดที่ชนกันใน listener ผู้ติดต่อโดยการตรวจสอบตัวแปรจากส่วนข้อมูลผู้ใช้ของร่างกายรับตัวเลขในรายการอาร์เรย์และในที่สุดก็ใช้ตัวจัดการอัปเดตเพื่อลบเนื้อหาเหล่านี้
คำถามคือ: ฉันใช้ arraylist ถูกต้องหรือไม่ วิธีการเพิ่มตัวแปรไปยังข้อมูลผู้ใช้ (รหัสโปรด) ฉันพยายามลบเนื้อหาในตัวจัดการอัปเดตนี้ แต่ก็ยังส่งฉัน NullPointerException ดังนั้นวิธีที่ถูกต้องในการเพิ่มตัวจัดการอัปเดตคืออะไรและฉันควรเพิ่มที่ไหน คำแนะนำอื่น ๆ ในการทำเช่นนี้จะดีมาก ขอบคุณล่วงหน้า.