我有这样的事情
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系列分发?
答案 0 :(得分:1)
您需要一种方法将触摸事件传播到其他powerBar单元。也许有一个类(让我们称之为PowerBarController)来保存对每个powerBar单元的引用,并让你的各个powerBar单元在PowerBarController上调用一个回调方法来通知触摸了哪个单元。然后你的PowerBarController可以为受影响的精灵调用changeTileIndex。