cocos2d x 原始碼剖析(2)

2021-06-20 21:28:08 字數 858 閱讀 7322

上次講到cocos2d-x的main loop是下面這句:

我們來看看這個函式的內部實現:

return0;

}看看,我沒有欺騙大家吧。這個函式在設計的時候想要參照main函式返回乙個int值來表示執行結果,但是你知道的外部呼叫中完全沒有進行處理,略坑爹。來深入這個函式的內部:

-(void) startmainloop

這個函式在不同平台實現不同,在這裡它使用被動重新整理模式。就是系統的display link調動遊戲的主迴圈。這比乙個單純的while迴圈更能節省系統資源,與android上的opengl繪製類似。與之不同的是desktop平台上的實現。你會發現,就算什麼都不繪製,cocos2d-x也要耗盡你乙個cpu核的計算。測試hello world在我的touch 5 上閒置cpu占用只有10%。

到這裡可以知道run函式只是進入main loop的入口,一直在不停呼叫的是:

cocos2d::ccdirector::shareddirector()->mainloop();

進入ccdirector這個類就會發現,這也是乙個抽象類,mainloop被標示為純虛函式。那就看看shareddirector:

ccdirector* ccdirector::shareddirector(void)

return s_shareddirector;

}

void ccdisplaylinkdirector::mainloop(void)

elseif(!m_binvalid)

}

cocos2d x 原始碼剖析(1)

原文出處 我認為在看這些文章的時候,最好有一些cocos2d x的經驗。起碼能新建乙個cocos2d x的hello world工程。而且這些文章並不是用來入門和教你如何使用cocos2d x的,我的目標是看完這些文章之後,寫乙個完整的2d引擎將沒有問題。而且能夠為cocos2d x查漏補缺,看看那...

cocos2d x 原始碼剖析(8)

寫到第7節的時候,突然覺得cocos2d x還沒有我想的那麼大啊,或許在50節以內就要了結了。這節繼續看看ccnode這個節點,主要部分是action。雖然ccnode有不少的action相關的函式,起作用的實際上是actionmanager。這節雖說是從ccnode開始,但是真正的內容在actio...

cocos2d x 原始碼剖析(17)

draws a texture at a given point void drawatpoint const ccpoint point draws a texture inside a rect void drawinrect const ccrect rect 這節之所以單獨來講,是因為這是整...