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