遊戲開發中往往會遇到資料的及時更新,層間通訊等問題,例如遊戲中花費金幣購買道具,完成後需要及時更新狀態列的個人金幣資訊。cocos2d-x給我們提供了一種解決方案,這就是使用觀察者模式,ccnotificationcenter是乙個單例類。使用的方式很簡單,在初始化時可以新增乙個觀察者
ccnotificationcenter::sharednotificationcenter()->addobserver(this, callfunco_selector(observermodel::receivemsg), "update", null);
然後在需要發訊息的地方post就可以ccnotificationcenter::sharednotificationcenter()->postnotification("update");
新增觀察者的函式包括四個引數,第二個引數即設定訊息的**函式,第三個引數可以理解為觀察者的標識,這個和post的訊息名稱一樣。
傳送訊息包括兩種方式,帶資料和不帶資料
void postnotification(const char *name);
void postnotification(const char *name, ccobject *object);
使用觀察者模式結束時一定要移除觀察者,以免出現記憶體洩露。
本例中通過點選按鈕,顯示一串字元,實現訊息通知,每次點選顯示的字元顏色會發生變化。
1void
observermodel::onenter()26
7void
observermodel::sendmsg()812
13void observermodel::receivemsg()//
改變文字顏色
1422
23void
observermodel::onexit()
2428
2930
bool sendmessage::init()//
post message
3136 ccnotificationcenter::sharednotificationcenter()->postnotification("
update");
3738
return
true
;39 }
cocos2dx中的設計模式
1.二段構建模式 大家都知道在c 中我們一般在建構函式中為物件分配記憶體空間然後初始化成員變數,比如我們呼叫了new某個東西,那麼在堆上會先為物件分配記憶體空間,然後呼叫建構函式,在建構函式中完成一些初始化的工作。而二段構建模式就是將記憶體空間的分配和初始化分開來完成,然後呼叫乙個靜態方法來返回這個...
cocos2d x 混合模式
在opengl es 使用glblendfunc函式實現實現混合模式,cocos2d x中可以使用blendfunc。什麼是顏色混合?簡單來說就是將rgba中的a,經行操作處理。具體一點,就是把某一畫素位置原來的顏色和將要畫上去的顏色,通過某種方式混在一起,從而實現特殊的效果。opengl 會把源顏...
Cocos2d x的設計模式
單例模式 單例模式的定義是產生乙個類的唯一例項,但js本身就是一種 無類 語言,很多講就是設計模式的文章把 當成乙個單例來使用也勉強說的通,因為js生成物件的方式有很多種。簡單工廠模式 簡單工廠模式是由乙個方法來決定到底要建立哪個類的例項,而這些例項經常都擁有相同的介面,這種模式主要用於在所例項化的...