我有一個帶4個按鈕的MC(按鈕欄)。將單獨的事件偵聽器添加到每個按鈕或將單個事件偵聽器添加到父項並使用e.target.name檢測哪個被點擊是更有效?謝謝!AS3 - 爲孩子添加不同的事件監聽器,或向父代添加一個監聽器?
2
A
回答
0
活動是昂貴的,並與衆多的事件處理程序,你應該consider using callbacks instead of the event model高性能應用。
ActionScript 3.0事件模型基於對象 調度的概念。事件模型是面向對象的,並針對代碼 重用進行了優化。 dispatchEvent()方法遍歷偵聽器列表 ,並在每個註冊對象上調用事件處理函數方法。然而, 事件模型的缺點之一是,您可能在應用程序的整個生命週期內創建許多對象。
使用本地事件模型可以是較慢的和消耗更多的存儲器 比使用傳統的回調函數。在內存中創建和分配的事件對象必須爲 ,這會導致性能下降。 例如,在偵聽Event.ENTER_FRAME事件時,會在事件處理函數的每個幀上創建一個新的事件對象。 由於 捕捉和冒泡階段,顯示對象的性能可能會特別慢,如果列表顯示覆雜,這可能會很昂貴。
同樣,numerous mouse enabled interactive objects are cpu-intensive。
當使用交互式對象,如MovieClip或精靈 對象時,運行時執行本機代碼,以檢測和處理鼠標 相互作用。在屏幕上顯示許多交互式對象時,檢測鼠標交互可能會佔用大量CPU資源,尤其是在它們重疊的情況下尤其如此。
如果可能,請考慮禁用鼠標交互,這有助於您的應用程序使用較少的CPU處理,從而減少移動設備上的電池使用量。
從動畫的實際經驗來看,我可以調用數千次回調,而每幀處理器數量有限。
根據您的示例,組件體系結構可以使事件向上吹到父控件;因此,這是按鈕欄捕捉事件的更好設計模式。
根據按鈕與按鈕欄的緊密耦合情況,除非您正在調度從按鈕欄控件抽象按鈕控件的自定義事件,否則switch
名稱/實例塊纔有意義。
0
這是你可以使用。
addChild("YourButtonName").addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
private function mouseDownHandler(event:MouseEvent):void {
"Your mouse click Action is Here"
}
相關問題
- 1. 添加事件監聽器
- 2. 添加一個事件監聽器impress.js
- 3. 向按鈕添加事件監聽器
- 4. jquery插件添加事件監聽器
- 5. 添加事件偵聽器,以形成由事件監聽器
- 6. AS3:添加事件監聽器到加載的AS2 SWF
- 7. 聚合物添加事件監聽器
- 8. CakePHP添加事件監聽器
- 9. 添加事件監聽器在VueJS 2
- 10. 添加事件監聽器時出錯
- 11. Symfony添加事件監聽器
- 12. 捆綁添加事件監聽器
- 13. TinyMCE - 添加事件監聽器問題
- 14. AS3附加事件監聽器
- 15. 添加動作監聽器
- 16. 添加監聽器Zoomin OpenSeaDragon
- 17. 添加到監聽器ArrayList
- 18. 添加監聽器,則SpanElement
- 19. 添加監聽
- 20. 爲UIResponder添加兩個監聽器
- 21. Clojurescript添加一個活動監聽器
- 22. 添加一個監聽器到leftBarButtonItem
- 23. 添加事件監聽器創建一個滾動事件 - Javascript
- 24. 爲ckeditor中的按鍵添加事件監聽器的代碼
- 25. 添加事件監聽到的一類
- 26. 向JtextArea添加鍵監聽器
- 27. 使用Angular4向Amcharts添加監聽器
- 28. Java:向JFrame添加密鑰監聽器
- 29. Laravel監聽器監聽多個事件
- 30. AS3 mouseChildren = false將事件監聽器添加到兒童
後者,但你必須有很多的聽衆,使其在性能上真正的區別 – BadFeelingAboutThis
對於點擊事件,你可以每千的百餘項與它自己的點擊監聽,並不會物。 – BadFeelingAboutThis
這就是我的想法。謝謝! – yvesbastos