2011-02-09 325 views
0

我的問題是:攔截所有按鈕點擊

有沒有一種方法,我可以攔截所有按鈕單擊事件在我的Flex(空氣)的應用程序,因爲我需要添加一個聲音有些按鈕被點擊的時候,和我不想遍歷所有屏幕並添加此功能,還要更改每個按鈕中的每個點擊事件。

那麼有沒有辦法可以做到這一點?

謝謝!

回答

1

這取決於您的具體網站結構這可能是多麼容易。你的按鈕是否都有自己獨特的類,或者是否有共同的特徵(在他們的實例名稱中是一種常見的匈牙利風格_btn標記)?如果是的話,你可以嘗試這樣的事:

root.addEventListener(MouseEvent.CLICK, onButtonClickPlaySound); 
private function onButtonClickPlaySound(e:MouseEvent):void{ 
    if(e.target is ExtendedButton){ 
     // play sound here... 
    } 

    // or.... 

    if(e.target.name.indexOf("hungariannotation") >= 0){ 
     // play sound here... 
    } 
} 

這不會工作,如果處理程序下顯示列表停止事件傳播。鼠標點擊必須一直泡到根。

+1

我會補充說,你應該定位'stage'或另一個共同的父按鈕共享,然後將'listener'中的'useCapture'參數設置爲'true',這樣你就可以攔截'CLICK'按鈕接收它們之前的事件。之後,你可以像上面那樣過濾'event.target'屬性。 – 2011-02-09 19:25:23