Android 更改精灵的父对象

Android 更改精灵的父对象,android,andengine,Android,Andengine,我有两个雪碧盒子&EasyEnemy。它们已经附着在场景中,并且随机移动。当它们相互碰撞时,我想把容易的敌人当作盒子精灵的孩子 EasyEnmy来自场景中的通用池。我在manageupdate()上迭代所有的EasyEnemy框内精灵&框精灵照常创建 这是我的密码: private void moveBox() { aBox = new Sprite(0, 0, aResourceManager.boxTexture, vBOM) { @Override

我有两个雪碧盒子&EasyEnemy。它们已经附着在场景中,并且随机移动。当它们相互碰撞时,我想把容易的敌人当作盒子精灵的孩子

EasyEnmy来自场景中的通用池。我在manageupdate()上迭代所有的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)

当发生碰撞时,此方法称为多次,因此多次尝试将子对象附加到父对象,并且您已经知道子对象一次只能有一个父对象。 因此,要么您需要更改逻辑,以便只调用一次碰撞方法,要么您需要调用
ee.setParent(aBox)之前的ee.detachself()

在ee.setParent(aBox)之前使用ee.detachself()时没有更改@Jawad Amjad Vai在添加一张支票后,我得到了它。@Jawad Amjad Vai。