2013-10-26 21 views
0

的所有觸摸事件,我的圖像,精靈和影片剪輯主級1級和載荷爲1級八哥框架集中化我的遊戲

/** 
* @desc This handles any touch event interactions in the level 
* @param event 
*/ 

private function touchInteractionHandler(event:TouchEvent):void { 

    //register event listeners for touches 
    var touchBegan:Touch = event.getTouch(this, TouchPhase.BEGAN); 
    var touchEnded:Touch = event.getTouch(this, TouchPhase.ENDED); 
    var touchHover:Touch = event.getTouch(this, TouchPhase.HOVER); 

    //listen for touches that have just ended 
    if (touchEnded) { 

     if (touchEnded.tapCount == 2) { 

      //get object touched 
      var object = event.target; 

      //check if player is in walking range. if so then walk to that position of touch.globalx and y 
      playerWalkCheck(touchEnded.globalX, touchEnded.globalY); 
     } 

    } 
} 

我想集中我觸摸在遊戲中的孩子。我不希望舞臺上的所有動畫片段擁有多個監聽器,而是希望主要的觸摸事件監聽所觸摸的內容。

例如當我雙擊他時,在舞臺上有一隻叫做Bob的狗,它會調用上面的方法touchInteractionHandler()。

我知道如何讓MovieClip對象,並跟蹤它:

trace(event.target); 

[object MovieClip] 

我只是似乎不知道如何鑑別這樣我就可以做以下(僞)

的影片剪輯的名稱
if movieclip is bob -> 
    //do something with bob 
else if movieclip is charlie -> 
    //do something wit charlie 
else -> 
    make player walk to a position e.g. playerWalkCheck(touchEnded.globalX, touchEnded.globalY); 

這是我的遊戲項目中的實際負擔和解決方案將是非常有益的

回答

0

這裏是我是如何處理的問題具有多個羽毛按鈕(他們得到的來自MovieClip,原理與普通的MovieClip相同),並且不希望每個人都有獨立的偵聽器。創建對象時,每個觸發都發送給同一個事件偵聽器。然後,我有一個載體,我的東西創建後,所有的按鈕:

private var vBtns:Vector.<Button>; 

在監聽我:

private function onBtnTouch(e:starling.events.Event):void 
{ 
    var idxButton:int=vBtns.indexOf(e.currentTarget); 
    doSomething(idxButton);//or vBtns[idxButton].something() 
} 

同樣的系統可以很容易地擴展到處理其他類型的對象可調度觸摸事件。

從我的理解你嘗試類似的東西,它沒有奏效。您是否使用了正確的Event類型(starling.events.Event,而不是舊的Flash touch事件)?

+0

是的我找到了解決辦法。在主類中增加了一個主要的監聽器。每當任何單獨的對象被觸摸時,它們都會派發一個自定義事件來傳遞發送對象的參數。 –