Android 更改精灵的父对象
我有两个雪碧盒子&EasyEnemy。它们已经附着在场景中,并且随机移动。当它们相互碰撞时,我想把容易的敌人当作盒子精灵的孩子 EasyEnmy来自场景中的通用池。我在manageupdate()上迭代所有的EasyEnemy框内精灵&框精灵照常创建 这是我的密码:Android 更改精灵的父对象,android,andengine,Android,Andengine,我有两个雪碧盒子&EasyEnemy。它们已经附着在场景中,并且随机移动。当它们相互碰撞时,我想把容易的敌人当作盒子精灵的孩子 EasyEnmy来自场景中的通用池。我在manageupdate()上迭代所有的EasyEnemy框内精灵&框精灵照常创建 这是我的密码: private void moveBox() { aBox = new Sprite(0, 0, aResourceManager.boxTexture, vBOM) { @Override
private void moveBox() {
aBox = new Sprite(0, 0, aResourceManager.boxTexture, vBOM) {
@Override
protected void onManagedUpdate(float pSecondsElapsed) {
// Iterate over all Easy Enemy
eIt = getEasyEnemyIterator();
while (eIt.hasNext()) {
final EasyEnemy ee = eIt.next();
if (this.collidesWith(ee)) {
aResourceManager.mEngine
.runOnUpdateThread(new Runnable() {
@Override
public void run() {
ee.clearEntityModifiers();
ee.clearUpdateHandlers();
ee.setIgnoreUpdate(true);
ee.reset();
ee.setParent(aBox);
aBox.attachChild(ee);
}
});
}
}
super.onManagedUpdate(pSecondsElapsed);
}
};
attachChild(aBox);
aBox.registerEntityModifier(new MoveModifier(15, 360, 360, 0, 1200));
aBox.setZIndex(9990);
}
我犯了这样的错误
E/AndroidRuntime(2876): FATAL EXCEPTION: UpdateThread
E/AndroidRuntime(2876): java.lang.IllegalStateException: pEntity 'EasyEnemy' already has a parent: ''. New parent: ''!
E/AndroidRuntime(2876): at org.andengine.entity.Entity.assertEntityHasNoParent(Entity.java:1412)
当发生碰撞时,此方法称为多次,因此多次尝试将子对象附加到父对象,并且您已经知道子对象一次只能有一个父对象。 因此,要么您需要更改逻辑,以便只调用一次碰撞方法,要么您需要调用
ee.setParent(aBox)之前的ee.detachself() 在ee.setParent(aBox)之前使用ee.detachself()时没有更改@Jawad Amjad Vai在添加一张支票后,我得到了它。@Jawad Amjad Vai。