Cocos2D-X cpp-tests 學習筆記 0

程序的啟動

main 函數

main 函數中,首先實例化了自動釋放池,因為 iOS 和 Cocos2D-X 的內存管理方式都是引用計數,這個自動釋放池貫穿著整個程序的生命周期,然后接下來給 UIApplicationMain 傳入命令行參數以啟動程序,注意 UIApplicationMain 的最后一個參數:

int retVal = UIApplicationMain(argc, argv, nil, @"AppController");

@"AppController" 表示要進入名為 AppController 這個類,也就是我們這個 iOS 程序的應用程序委托,

tests/cpptests/proj.ios/Classes/testsAppDelegate.h
tests/cpptests/proj.ios/Classes/testsAppDelegate.mm

這兩個文件定義了 AppController 類,注意實現文件的后綴 mm ,表示這個文件是以 OC 和 C++ 混寫的。這個類實現了 UIApplicationDelegate 協議,是我們整個 iOS 程序的委托(注意與 Cocos2D 程序的委托區分)。

AppController (iOSApplicationDelegate)

在 iOS 應用程序委托中,我們主要關注一下 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法。這是程序啟動之后的回調方法。
這個方法大概做了這些事:

  1. 首先取得了 Cocos2D 的 Application ,這是一個單例;
  2. 實例化一個 UIWindow 并顯示;
  3. 實例化一個 RootViewController 并賦給 UIWindow 的 rootViewController ;
  4. 處理 GLView 并分別綁定到 rootViewController 和 Director 上;
  5. 調用 cocos2d::Application 的 run 方法,表示我們的 Cocos2D 程序啟動了。

在 AppController 中的回調函數中,我們可以加一些關于程序啟動、進入后臺等一些處理,在 RootViewController 中,我們可以做一些關于內存警告、屏幕方向的處理。

現在,Cocos2D 程序也啟動了,類似于 iOS 程序,Cocos2D 程序也有自己的應用程序委托。

AppDelegate (Cocos2DApplicationDelegate)

tests/cpp-tests/Classes/AppDelegate.h
tests/cpp-tests/Classes/AppDelegate.cpp

中定義了 Cocos2D 應用程序委托:AppDelegate ,注意實現文件的后綴 cpp ,表示我們現在已經“離開了” iOS 的 “OC 世界”,來到了 Cococ2D-X 的 “CPP 世界”,當然,之后我們也可以定義自己的 mm 文件來調用 iOS 的 API 。

在 AppDelegate 類中,也有關于程序啟動、進入后臺等的相關回調方法,同時有一個私有成員變量 : _testController 。我們依然關注一下程序啟動的回調方法 :bool AppDelegate::applicationDidFinishLaunching() 看看在程序啟動之后都做了什么。

  1. 初始化 Director;
  2. 開啟 FPS 顯示模式用于調試,設置幀率;
  3. 獲取 FileUtils 單例并加入資源搜索路徑;
  4. 獲取 testController 單例(調用 getInstance() 方法 ,其中 getInstance() 方法中調用了 TestController 的構造方法)。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協議。它實...
    香橙柚子閱讀 24,030評論 8 183
  • 年前老公非要看的電影,我沒時間陪他去,一直拖著,最后這貨還是趕在下映之前自己去看了。本來沒有打算再看,前兩天...
    謝凈生閱讀 1,290評論 0 2
  • 文/小花媽媽 育兒的過程中,這樣的情景幾乎每天都在每個家庭中上演:說好了每天只看兩集動畫片,兩集結束卻哭鬧著還要看...
    小花媽媽媽閱讀 732評論 0 0