私は 2 つのスプライト BOX と EasyEnemyを持っています。それらはすでにシーンに取り付けられており、ランダムに動きます。ぶつかった時に当たりやすいエネミーをBOXスプライトの子として付けたいです。
EasyEnemy は、シーン内の汎用プールから取得されます。通常どおり、BOX スプライト onManageUpdate() 内のすべてのEasyEnemyと BOX スプライトの作成を繰り返します。
これが私のコードです:
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)