cocos2d-x基础——基本代码框架
来源:互联网 发布:淘宝介入后对卖家影响 编辑:程序博客网 时间:2024/05/01 01:17
打开Xcode,大致的代码框架如下:
代码主要有两个部分,一部分在Classes目录下,一部分在ios/mac目录下。前者是cocos代码的入口,后者是ios/osx程序的入口。
ios/osx的程序入口位于AppController.mm。具体的函数是:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}
该函数运行了cocos创建的app类,这个类继承自cocos2d::Application类,具体运行代码:
cocos2d::Application *app = cocos2d::Application::getInstance();app->run();
类的实现在Classes目录下的AppDelegate.cpp中。
另外,在AppController.mm中还有几个重要的函数:
- (void)applicationDidEnterBackground:(UIApplication *)application { /* Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. If your application supports background execution, called instead of applicationWillTerminate: when the user quits. */ cocos2d::Application::getInstance()->applicationDidEnterBackground();}- (void)applicationWillEnterForeground:(UIApplication *)application { /* Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. */ cocos2d::Application::getInstance()->applicationWillEnterForeground();}这些函数是ios应用中会用到的,表示的是程序进入后台和继续运行时会调用的函数。
这些都是ios开发用到的基础函数,可以参考《精通iOS开发》。
下面简单说下AppDelegate.cpp中的代码流程。
前面已经提到,在ios入口调用的是cocos2d::Application::getInstance()->run()来运行cocos代码的。
这个Application是一个静态类,run()函数的实现如下(这个需要看源代码):
int Application::run(){ if (applicationDidFinishLaunching()) { [[CCDirectorCaller sharedDirectorCaller] startMainLoop]; } return 0;}可以看到它需要使用applicationDidFinishLaunching()函数,而这个函数就在AppDelegate.cpp中有实现:
bool AppDelegate::applicationDidFinishLaunching() {}
实现的过程主要用到了cocos中两个很重要的类,一个是Director,另一个是Scene。
Director类的作用主要是设置属性,和控制Scene。前者完成了游戏基础环境的设置,后者通过场景的控制就完成了游戏的流程,每一个Scene就是游戏的一版,比如游戏主机面,游戏场景等等。
Scene类本身可以认为是一个容器,它上面可以放不同的组件。比如Layer组件,就是HelloWorldScene.cpp里面实现的(虽然名字像是用来实现Scene的,但实际是实现Layer的):
class HelloWorld : public cocos2d::Layer{public: static cocos2d::Scene* createScene(); virtual bool init(); // a selector callback void menuCloseCallback(cocos2d::Ref* pSender); // implement the "static create()" method manually CREATE_FUNC(HelloWorld);};
Layer上也可以放各种组件。
无论是Scene还是Layer,它们都继承自Node类,它说所有场景的基本元素,所有能够被绘制出来的场景都继承了这个类。
这个以后再写。
以上。
0 0
- cocos2d-x基础——基本代码框架
- Cocos2D-X的引擎核心—基本框架
- Cocos2d-x学习笔记(二)——Cocos2d的基本框架认识
- cocos2d-x基础——cocos安装和使用基础
- Learning Cocos2d-x for XNA(1)——小窥cocos2d-x框架
- cocos2d-x——CCLabelTTF(基本文本)
- cocos2d-x——CCLabelTTF(基本文本)
- cocos2d-x 框架深入分析(二)—— CCScheduler
- cocos2d-x 框架深入分析(一)—— MainLoop
- 了解Cocos2d-x整个引擎框架——helloworld
- cocos2d-x基本元素
- Cocos2d-x基本动作
- Cocos2d-x 基础概念——导演、场景、层、精灵
- Cocos2d-x 基础概念——调度器(scheduler)
- cocos2d-x框架介绍
- Cocos2D-X框架理解
- cocos2d-x框架预览
- cocos2d-x渲染框架
- 线程池
- ASP.NET 链接MySQL数据库
- 归并排序空间复杂度O(1)的实现
- HDU 1222 Wolf and Rabbit(gcd)
- 实现360手机助手TabHost的波纹效果
- cocos2d-x基础——基本代码框架
- 汇编语言 王爽 第二版 实验15
- 分布式之RPC的协议以及错误处理
- ubuntu 分卷
- Jsp到数据库中文乱码解决方法
- js如何判断客户端类型
- springmvc mybatis 基于全注解事务配置注意事项
- 并不能ac jsoi2009
- 算法:特殊二维数组查询key值是否存在