我有两个精灵 BOX 和 EasyEnemy。他们已经附在现场,并且随机移动。当它们相互碰撞时,我想将简单的敌人附加为 BOX 精灵的孩子。
EasyEnemy 来自场景中的通用池。我像往常一样遍历BOX sprite onManageUpdate() 和 BOX sprite create 内的所有EasyEnemy 。
这是我的代码:
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)