文档章节

cocos2d-x 游戏引擎入口

熊友良
 熊友良
发布于 2014/04/28 21:47
字数 662
阅读 219
收藏 3

Cocos2d-x 是当前手游开发2d游戏最热门的引擎了,从知道Cocos2d-x到现在也有一年多的时间,但使用cocos2d-x的时间却是非常少的,以至于现在使用的时候都是一头雾水;所以现在打算 跟进一步的了解Cocos2d-x游戏引擎……

Cocos2d-x支持跨平台,而各种平台的实际应用入口是不相同的,为了寻找游戏引擎的入口,现用ios平台来说明; 注:我本非iOS开发者,对于iOS应用基本框架是不熟悉的,所以下面说的不会很详细,大概知道干吗的就可以了

打开3.0 版本的 cpp-empty-test, 在proj.ios目录下找到main.m,会发现有一个@"AppController";接下来在proj.ios目录下找到AppController.mm文件,有一个静态的AppDelegate对象;在application方法的最后 cocos2d::Application *app = cocos2d::Application::getInstance();查看Application类、AppDelegate类、ApplicationProtocol类的源代码后会发现,app是指向前面看到的AppDelegate静态对象的;跟踪app->run();调用,可以看到CCDirectorCaller类的startMainLoop方法中,会看到有一个selector:@selector(doCaller:); 进入到doCaller方法中就能看到熟悉的东西了:Director::getInstance()->mainLooop();至此,才真正到了引擎内的主循环,开始绘制场景;

再有,一般教程会从AppDelegate类说起,这样的说法个人认为,虽然逻辑上游戏的入口确实是从这里启动的:第一个要加载的场景,第一个要加载的视图层都是在这里载入的,从游戏功能开发的角度看,开发者只要关心这个入口就够了;但对于想一探究竟的开发者来说,尤其是没有开发经验的新人来说绝对是一个坑; 再吐槽一个:AppDelegate::applicationDidFinishLaunching()方法中调用的Director::getInstance()->runWitnScene();真的只是一个逻辑上的run,进到方法内部后发现,它其实只是一个scene压栈的过程;也就是一个初始化需要最初绘制的东西的过程……

但回过头来讲,这样的设计是合理的,将需要隐藏的隐藏起来,给开发者一个简单的入口;

最后,一如既往的是,欢迎大家的意见和建议……,大家共同学习

© 著作权归作者所有

共有 人打赏支持
熊友良
粉丝 4
博文 18
码字总数 6327
作品 0
广州
程序员
Cocos实战篇——作品集

【唠叨】 之前学校的WP课程大作业需要交好几个WP应用,所以随手写了几个游戏。 现在有空,把它分享给大家。 【小游戏目录】 CrazyDodge PaperPlane Sudoku 【CrazyDodge】 0、源码 https://...

shahdza
2015/03/19
0
0
Cocos2d 开源社区进军 Windows Phone 7: Cocos2d-x for XNA游戏引擎发布

2012 年 2 月 17 日,著名的开源社区 Cocos2d 发布 Cocos2d-X for XNA 版本。该游戏引擎针对微软最新移动操作系统 Windows Phone 7 平台,开发者可以采用 C# 语言开发基于 Windows Phone 平台...

红薯
2012/02/17
1K
4
java可以同时开发安卓和IOS

Cocos2d-x VS. OGEngine,联盟与部落的战争 在近期的全球移动开发者大会上,Unity发布了2D引擎,触控在同时发布了Cocos 3D引擎;而在差不多同时间,以安卓为主的OGEngine也发布了新版本,并宣...

keo牛
2014/08/04
5.5K
0
两大开源游戏引擎Cocos2d-x及OGEngine对比分析

在近期的全球移动开发者大会上,触控发布了Cocos3D引擎;而在差不多同时间,以安卓为主的OGEngine也发布了新版本,并宣布将支持跨平台。 Cocos2d-x和OGEngine都是当前比较受开发者欢迎的开源...

橙游OrangeGame
2014/08/11
8.2K
1
开源的跨平台游戏开发框架--Cocos2d-x

Cocos2D-X 是全球知名的开源跨平台游戏引擎,易学易用,目前已经支持 iOS、Android、Windows 桌面、Mac OS X、Linux、BlackBerry、Windows Phone 等平台。Cocos2d-JS 统一了使用 JS 进行开发...

王哲Walzer
2012/01/15
116.6K
7

没有更多内容

加载失败,请刷新页面

加载更多

下一页

移除或自定义 WordPress 仪表盘欢迎面板

第一次登录 WordPress 后台仪表盘页面,默认都会显示 WordPress 的欢迎面板: 如果我们要移除这个面板,在主题的 functions.php 中添加下面的代码即可: 12 //移除 WordPress 仪表盘欢迎面...

james_laughing
23分钟前
0
0
HashMap实现原理及源码分析

HashMap实现原理及源码分析   哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,...

DemonsI
27分钟前
0
0
eggjs学习笔记

快速初始化 生成项目(要求最低的node版本8.x) npm i egg-init -gegg-init egg-example --type=simplecd egg-examplenpm i 启动项目 npm run dev 配置 环境配置会覆盖默认配置 config...

别人说我名字很长
30分钟前
1
0
Winform Timer控件时间间隔

sender as System.Timers.Timer).Interval = 23 * 60 * 60 * 1000.0;//将时间间隔改为23小时,23小时后重新发生timer_Elapsed事件。 //60000:时间间隔1分钟,300000:时间间隔5分钟,600000:...

笑丶笑
30分钟前
0
0
在win10系统下怎样快速切换任务视图

切换窗口:Alt + Tab 任务视图:Win + Tab (松开键盘界面不会消失) 切换任务视图:Win + Ctrl +左/右 创建新的虚拟桌面:Win + Ctrl + D 关闭当前虚拟桌面:Win + Ctrl + F4...

SummerGao
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部