在不少圖形用戶技術中,事件處理機制通常都有三個重要的角色:事件、事件源和事件處理者。事件源是事件發生的場所,一般就是各個視圖或控件,事件處理者是接收事件並對其進行處理的一段程序。
事件處理機制中三個角色
在Cocos2d-JS引擎事件處理機制中也有這三個角色。
一、事件
事件類是cc.Event,它的類圖以下圖所示,它的子類有:cc.EventTouch(觸摸事件)、cc.EventMouse(鼠標事件)、cc.EventCustom(自定義)、cc.EventKeyboard(鍵盤事件)和cc.EventAcceleration(加速度事件)。
html
事件類圖node
二、事件源
事件源是Cocos2d-JS中的精靈、層 、菜單等節點對象。
三、事件處理者
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()。註銷全部事件監聽器,須要注意的是使用該函數以後,菜單也不能響應事件了,由於它也須要接受觸摸事件。spa
更多內容請關注最新Cocos圖書《Cocos2d-x實戰:JS卷——Cocos2d-JS開發》.net
本書交流討論網站:http://www.cocoagame.net
orm
歡迎加入Cocos2d-x技術討論羣:257760386
視頻
更多精彩視頻課程請關注智捷課堂Cocos課程:http://v.51work6.com
htm
智捷課堂現推出Cocos會員,敬請關注:http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0
《Cocos2d-x實戰 JS卷》現已上線,各大商店均已開售:
京東:http://item.jd.com/11659698.html
歡迎關注智捷iOS課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息