文档章节

cocos2d-x 游戏引擎入口

熊友良
 熊友良
发布于 2014/04/28 21:47
字数 662
阅读 223
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq学习(一)

RabbitMQ是目前非常热门的一款消息中间件,具有高可靠、易拓展、高可用及丰富的功能 1.什么是消息中间件 消息是指在应用间传送的数据。包含文本字符串、JSON、内嵌对象 消息队列中间件(消息...

hensemlee
4分钟前
0
0
学习设计模式——原型模式

1. 认识原型模式 1. 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 2. 结构: Prototype:声明一个克隆自身的接口,用来约束想要克隆自己的具体实现类,要求这些类...

江左煤郎
10分钟前
0
0
观察者模式

观察者模式的套路 有如下角色: 事件,比如修改,用户点击; 事件队列,触发事件之后,会把事件一个一个放入事件队列 监听器,采用某种方式(一般是轮询,或者io阻塞机制),来判断事件队列是否有新的未...

黄威
14分钟前
0
0
线程安全策略

四个线程安全策略 线程限制: 一个被线程限制的对象,由线程独占,并且只能被占有它的线程修改 共享只读: 一个共享只读的对象,在没有额外同步的情况下,可以被多个线程并发访问,但是任何线...

Ala6
20分钟前
0
0
Dubbo (三)源码分析 —— 架构原理

1 核心功能 首先要了解Dubbo提供的三大核心功能: Remoting:远程通讯 提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式。 Cluster: 服务框架 提供基于接口方...

小刀爱编程
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部