日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cocos2dx 自定义事件

發(fā)布時間:2024/3/13 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2dx 自定义事件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

cocos2dx里Director類里有一個_eventDispatcher成員變量,_eventDisptacher的類型是EventDispatcher。

對于EventDispatcher,只要是這個類的對象發(fā)送(通過dispatchEvent發(fā)送)的事件(EventCustrom對象),該對象的監(jiān)聽器(EventListenerCustom)就可以監(jiān)聽(通過addEventListenerWithFixedPriority或者addEventListenerWithSceneGraphPriority監(jiān)聽)到該事件。

這樣,對于項目中,不管什么地方,只要監(jiān)聽該事件;然后不管什么地方,只要發(fā)送該事件,就可以直接調(diào)用得到。

比如:有三個按鈕,按第一個時,需要按鈕二和三高亮。

此時,可以按鈕二和三監(jiān)聽一個事件,按鈕一發(fā)送該事件即可。

當然,也可以按鈕一擁有按鈕二和按鈕三的成員變量。

但是如果需求發(fā)生改變時,按鈕二沒有了,這時會影響到按鈕一,按鈕一的代碼就要改動,不符合程序設(shè)計的單一職責原則

這種事件監(jiān)聽和發(fā)送的機制就是程序設(shè)計模式中的一種。目的就是為了減少程序間的耦合性。

要知道,高內(nèi)聚低耦合是程序設(shè)計的基本思想。

下面是實例代碼:

_listener = EventListenerCustom::create("game_custom_event", [=](EventCustom* event){std::string str("Custom event received, ");char* buf = static_cast<char*>(event->getUserData());str += buf;str += " times";statusLabel->setString(str.c_str()); });Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_listener, 1);auto sendItem = MenuItemFont::create("Send Custom Event", [=](Ref* sender){static int count = 0;++count;char* buf = new char[10];sprintf(buf, "%d", count);EventCustom event("game_custom_event");Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);event.setUserData(buf);_eventDispatcher->dispatchEvent(&event);CC_SAFE_DELETE_ARRAY(buf); }); 上面的代碼是cocos2dx NewEventDispatcherTest中的代碼。其中做了一些改動,把原代碼中的_eventDispatcher改成了上面的Director::getInstance()->getEventDispatcher()。

cocos2dx里的Node類有一個_eventDispatcher成員變量,所以Node的子類也有。原代碼中的_eventDispatcher就是這樣一個變量,其實_eventDispatcher根本上就是Director::getInstance()->getEventDispatcher(),大家可以跟著原代碼查看一下。

但是我個人覺得Node里的會讓人產(chǎn)生歧義,會讓人覺得只有Node里才有事件管理器,而沒有全局的事件管理器。

總結(jié)

以上是生活随笔為你收集整理的cocos2dx 自定义事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。