本人純菜鳥,C++略知一二 JAVA什麼的都不懂 。博文自是自己對coco的理解。如有錯誤請幫忙指正 不勝感激!
之前沒有接觸過COCOS2DX 2.X版本
直接學習的是3.0beta2版本。
每個平臺的入口點都不一樣。但是進入程序後,首先執行的是
AppDelegate 類的applicationDidFinishLaunching()函數
AppDelgate類繼承自cocos2d::Application
class AppDelegate : private cocos2d::Application
採用private繼承方式主要是隱藏一些不必要的接口防止Director 類錯誤使用。當然我們也可以自定義一個類替代AppDelegate。不過沒有必要除非裝裝B什麼的。
在這個函數內執行對導演類(Director)和視窗類(eglView)的初始化.
這兩個類都是單例對象。
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director 初始化導演雷 和視窗類,因爲這兩個類都是單例。構造函數不是公開的。
auto director = Director::getInstance();
auto eglView = EGLView::getInstance();
//將導演和視窗關聯以便顯示
director->setOpenGLView(eglView);
// turn on display FPS 顯示FPS值 默認是關的!
director->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this 設置FPS值默認爲1.0/60
director->setAnimationInterval(1.0 / 60);
// create a scene. it's an autorelease object。建立一個場景該場景具體在其他文件定義
auto scene = HelloWorld::createScene();
// run 導演選擇這個場景進行顯示。
director->runWithScene(scene);
return true;
//這代碼裏使用了C++ 11 auto關鍵字 自動推導類型。 關於爲什麼返回true我也不太明白。反正helloworld的例子就是這樣。
}
從這行代碼可以理解到:首先要初始化導演和視窗。然後建立一個場景 讓導演顯示這個場景。 接着程序的運行流程進入運行場景的邏輯。直到程序結束