2011-11-22 89 views
0

我有這樣AndEngine和onAreaTouched一系列的精靈

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的簡單的矩形我wan't是每個POWERBAR單元的觸摸它應該改變其瓦片索引(這個邏輯被實現)。

但是,onAreaTouched只會被第一個powerBar單元調用,並且它沒有得到更新系列的其餘部分。

我該怎麼做才能讓touch事件通過整個powerBar untis系列進行分發?

回答

1

您需要一種方式將touch事件傳播到其他powerBar單元。也許有一個類(讓我們稱它爲PowerBarController),它包含對每個powerBar單元的引用,並讓你的單個powerBar單元在PowerBarController上調用一個回調方法,通知哪個單元被觸摸。然後,您的PowerBarController可以調用受影響的精靈的changeTileIndex。