0

下面我有代码可以每隔一段时间生成一个精灵和一个触摸方法来摆脱精灵(它工作正常)。我的问题是当一个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);
4

1 回答 1

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} 
于 2013-04-29T05:21:58.737 回答