AndEngine和onAreaTouched为一系列精灵

时间:2011-11-22 08:51:36

标签: android andengine

我有这样的事情

int height = 10;
for (int i = 0; i < powerBarUnits.size(); i++) {
    final PowerBar powerBar = powerBarUnits.get(i);

    lastest_y += (height);
    powerBar.sprite = new AnimatedSprite(
        (CAMERA_WIDTH - 50), lastest_y,
        powerBar.texture) {

    @Override
    public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
            float pTouchAreaLocalX, float pTouchAreaLocalY) {

            switch (pSceneTouchEvent.getAction()) {

                    case TouchEvent.ACTION_DOWN: {

                        powerBar.changeTileIndex();
                    }
                    }
                    return false;
                }

            };

            mScene.registerTouchArea(powerBar.sprite);
            this.mScene.attachChild(powerBar.sprite);

            lastest_y += 10;
        }

现在每个powerBar都是68x10大小的简单矩形,我不想触摸每个powerBar单元它应该改变它的tile索引(这个逻辑已实现)。

但onAreaTouched仅在第一个powerBar单元中被调用,并且没有更新系列的其余部分。

我可以做什么,以便触摸事件通过整个powerBar系列分发?

1 个答案:

答案 0 :(得分:1)

您需要一种方法将触摸事件传播到其他powerBar单元。也许有一个类(让我们称之为PowerBarController)来保存对每个powerBar单元的引用,并让你的各个powerBar单元在PowerBarController上调用一个回调方法来通知触摸了哪个单元。然后你的PowerBarController可以为受影响的精灵调用changeTileIndex。