javascript
Cocos2d-JS事件处理机制
在很多圖形用戶技術中,事件處理機制一般都有三個重要的角色:事件、事件源和事件處理者。事件源是事件發生的場所,通常就是各個視圖或控件,事件處理者是接收事件并對其進行處理的一段程序。
事件處理機制中三個角色
在Cocos2d-JS引擎事件處理機制中也有這三個角色。
1、事件
事件類是cc.Event,它的類圖如下圖所示,它的子類有:cc.EventTouch(觸摸事件)、cc.EventMouse(鼠標事件)、cc.EventCustom(自定義)、cc.EventKeyboard(鍵盤事件)和cc.EventAcceleration(加速度事件)。
2、事件源
事件源是Cocos2d-JS中的精靈、層 、菜單等節點對象。
3、事件處理者
Cocos2d-JS中的事件處理者是事件監聽器類cc.EventListener ,它包括幾種不同類型的監聽器:
cc.EventListener.ACCELERATION。加速度事件監聽器。
cc.EventListener.CUSTOM。自定義事件監聽器。
cc.EventListener.KEYBOARD。鍵盤事件監聽器。
cc.EventListener.MOUSE。鼠標事件監聽器。
cc.EventListener.TOUCH_ALL_AT_ONCE。多點觸摸事件監聽器。
cc.EventListener.TOUCH_ONE_BY_ONE。單點觸摸事件監聽器。
事件管理器
從命名上可以看出事件監聽器與事件具有對應關系,例如:鍵盤事件(cc.EventKeyboard)只能由鍵盤事件監聽器(cc.EventListener.KEYBOARD)處理,它們之間需要在程序中建立關系,這種關系的建立過程被稱為“注冊監聽器”。Cocos2d-JS提供一個事件管理器 cc.EventManager負責管理這種關系,具體說事件管理器負責:注冊監聽器、注銷監聽器和事件分發。
cc.EventManager類中添加事件監聽器的函數如下:
?addListener(listener, nodeOrPriority)
第一個參數listener是要添加的事件監聽器對象,第二個參數nodeOrPriority,可以是是一個Node對象或是一個數值。如果傳入的是Node對象,則按照精靈等Node對象的顯示優先級作為事件優先級,如下圖所示的實例精靈BoxC優先級是最高的,按照精靈顯示的順序BoxC在最前面。如果傳入的是數值,則按照指定的級別作為事件優先級,事件優先級決定事件響應的優先級別,值越小優先級越高。
?
精靈顯示優先級作為事件優先級
當不在進行事件響應的時候,我們應該注銷事件監聽器,主要的注銷函數如下:
removeListener(listener)。注銷指定的事件監聽器。
removeCustomListeners(customEventName)。注銷自定義事件監聽器。
removeListeners(listenerType, recursive)。注銷所有特點類型的事件監聽器,recursive參數是否遞歸注銷。
removeAllEventListeners()。注銷所有事件監聽器,需要注意的是使用該函數之后,菜單也不能響應事件了,因為它也需要接受觸摸事件。
?
?
?
更多內容請關注最新Cocos圖書《Cocos2d-x實戰:JS卷——Cocos2d-JS開發》本書交流討論網站:http://www.cocoagame.net
歡迎加入Cocos2d-x技術討論群:257760386更多精彩視頻課程請關注智捷課堂Cocos課程:http://v.51work6.com
智捷課堂現推出Cocos會員,敬請關注:http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0?
?
?
《Cocos2d-x實戰 JS卷》現已上線,各大商店均已開售:
京東:http://item.jd.com/11659698.html
歡迎關注智捷iOS課堂微信公共平臺,了解最新技術文章、圖書、教程信息
轉載于:https://www.cnblogs.com/iOS-Blog/p/4381121.html
總結
以上是生活随笔為你收集整理的Cocos2d-JS事件处理机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十分钟教你永久打开完整版Google P
- 下一篇: 高德地图JavaScript API开