在gles2中产卵精灵

时间:2013-04-28 21:21:10

标签: android andengine

下面我有代码经常产生一个精灵和一个触摸方法来摆脱精灵(它工作正常)。我的问题是当一个zombieSprite2产生并且我等待另一个zombieSprite2产生(所以我在屏幕上有两个相同的精灵)当我触摸产生它的第一个zombiesprite2影响第二个zombiesprite2并且没有任何事情发生在第一个。可能是触摸方法只会影响最近生成的zombiesprite2吗?

this.getEngine().registerUpdateHandler(
            zombieSpriteTimehandler = new TimerHandler(5, true,
                    new ITimerCallback() {

                        @Override
                        public void onTimePassed(TimerHandler pTimerHandler) {
                            // TODO Auto-generated method stub
                            zombieSprite2 = new Sprite(0, 200,
                                    zombieregion, mEngine
                                            .getVertexBufferObjectManager()) {

                                @Override
                                public boolean onAreaTouched(

                                        final TouchEvent pSceneTouchEvent,
                                        final float pTouchAreaLocalX,
                                        final float pTouchAreaLocalY) {
                                    ScaleModifier sm2 = new ScaleModifier(
                                            5,zombieSprite2.getScaleX(),
                                            zombieSprite2.getScaleX() + 1.03f);

                                    zombieSprite2.registerEntityModifier(sm2);
                                    if (zombieSprite2.getScaleX() > 1.02f) {
                                        zombieSprite2
                                                .setColor(Color.TRANSPARENT);
                                        mScene.detachChild(zombieSprite2);
                                        return true;

                                    }

                                    return false;
                                }

                            };

                            mScene.attachChild(zombieSprite2);

1 个答案:

答案 0 :(得分:2)

你应该为每个产卵精灵声明一个新对象。这里你只在场景顶部声明一个精灵对象zombieSprite2&每次存储精灵的最后一个对象。所以你得到了这个效果。

解决方案:

final Sprite zombieSprite2 = new new Sprite(0, 200,
                                zombieregion, mEngine
                                        .getVertexBufferObjectManager()) {

                            @Override
                            public boolean onAreaTouched(

                                    final TouchEvent pSceneTouchEvent,
                                    final float pTouchAreaLocalX,
                                    final float pTouchAreaLocalY) { // do your works here}