मैं अभी भी जावा और एंड्रॉइड प्रोग्रामिंग के लिए नया हूं और टकराव होने पर किसी वस्तु को हटाने में मुझे बहुत परेशानी हो रही है। मैंने वेब के चारों ओर देखा और पाया कि मुझे टकराव का पता लगाने (एक संपर्क श्रोता) के दौरान 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) {
}
});
मेरी योजना यह पता लगाने की है कि शरीर के उपयोगकर्ता डेटा अनुभाग से एक चर की जाँच करके संपर्क श्रोता में कौन से दो शरीर टकराए, सरणी सूची में अपने नंबर प्राप्त करें और अंत में इन निकायों को हटाने के लिए अपडेट हैंडलर का उपयोग करें।
प्रश्न हैं: क्या मैं सही ढंग से एंज़लिस्ट का उपयोग कर रहा हूँ? उपयोगकर्ता डेटा (कृपया कोड) में एक चर कैसे जोड़ें। मैंने इस अपडेट हैंडलर में एक निकाय को हटाने की कोशिश की, लेकिन यह अभी भी मुझे NullPointerException देता है, इसलिए अपडेट हैंडलर जोड़ने का सही तरीका क्या है और मुझे इसे कहां जोड़ना चाहिए। ऐसा करने के लिए कोई अन्य सलाह महान होगी। अग्रिम में धन्यवाद।