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,259评论 4 61
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,125评论 8 183
  • 年前老公非要看的电影,我没时间陪他去,一直拖着,最后这货还是赶在下映之前自己去看了。本来没有打算再看,前两天...
    谢净生阅读 1,300评论 0 2
  • 文/小花妈妈 育儿的过程中,这样的情景几乎每天都在每个家庭中上演:说好了每天只看两集动画片,两集结束却哭闹着还要看...
    小花妈妈妈阅读 743评论 0 0