分析cocos2d-x中的CrystalCraze示例游戏
cocos2d-x自带了不少示例,以及几个比较简单的游戏,不过这些游戏都是用javascript binding(SpiderMonkey)做的,所以我猜测javascript binding可能是cocos2d-x开发游戏的主流模式,优点是:
- 游戏逻辑用javascript,开发效率高,无需编译直接跑
- 因为使用了javascript binding,实际跑的还是C++代码,性能不容小觑
- javascript binding使用的api与cocos2d-html5一致,以后向cocos2d-htm

l5移植转换成纯网页游戏的成本接近于0
CrystalCraze用的系统自然也是js binding。

一、代码目录结构
cocos2d-x
samples
Javascript
*1 CrystalCraze
Classes
proj.android
proj.ios
proj.win32
Shared
games
*2 CrystalCraze
CrystalCraze.ccbproj
Images
Platform
Published-Android
Published-iOS
Resources
scripting
javascript
bindings
*3 js
jsb.js
jsb_chipmunk.js
jsb_chipmunk_constants.js
jsb_cocos2d.js
jsb_cocos2d_constants.js
jsb_cocos2d_extension.js
jsb_cocosbuilder.js
jsb_debugger.js
jsb_opengl.js
jsb_opengl_constants.js
jsb_sys.js
main.debug.js
主要是打*的三个目录:
- 游戏各平台的工程文件,以及C++启动代码(用来初始化引擎,以及启动js脚本引擎)
- 游戏资源,包括图片,声音,场景文件(ccb,)以及包含游戏主逻辑的javascript文件
- javascript binding的接口 - 运行时拷贝到同一目录下去。
二、主要代码文件及流程
- 首先build的时候,会把资源、jsbinding都拷贝到游戏目标目录下。
- 在AppDelegate.cpp中启动引擎,设置好读取资源的文件夹,然后启动js binding引擎,跑main.js
- main.js读取MainScene.ccb场景,运行MainScene.js进入主场景
- 选取Play之后,读取GameScene.ccb场景,并运行GameScene.js进行游戏。
MainScene和GameScene是两个游戏画面,其逻辑分别由MainScene.js和GameScene.js控制,里面包含游戏处理逻辑,和事件响应函数。
三、一些文件类型
- .ccbproj: CocosBuilder项目文件,用来管理场景文件(ccb)和其他资源(CocosBuilder目前只支持Mac)
- .ccb/.ccbi: CocosBuilder场景文件,可以被引擎的BuilderReader直接读入
- .plist: Property List,属性列表文件,它是一种用来存储串行化后的对象的文件,文件是xml格式的。
- .ogg: OGG Vorbis, 是一种新的音频压缩格式,类似于MP3等的音乐格式。它是完全免费、开放和没有专利限制的,而且支持多声道
- .psd: Adobe Photoshop Document file.
- .md: Markdown file
分析cocos2d-x中的CrystalCraze示例游戏的更多相关文章
- Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程
转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...
- 如何在cocos2d项目中enable ARC
如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...
- angular源码分析:angular中脏活累活的承担者之$interpolate
一.首先抛出两个问题 问题一:在angular中我们绑定数据最基本的方式是用两个大括号将$scope的变量包裹起来,那么如果想将大括号换成其他什么符号,比如换成[{与}],可不可以呢,如果可以在哪里配 ...
- angular源码分析:angular中入境检察官$sce
一.ng-bing-html指令问题 需求:我需要将一个变量$scope.x = '<a href="http://www.cnblogs.com/web2-developer/&qu ...
- Android 自定义View及其在布局文件中的使用示例(二)
转载请注明出处 http://www.cnblogs.com/crashmaker/p/3530213.html From crash_coder linguowu linguowu0622@gami ...
- angular源码分析:angular中各种常用函数,比较省代码的各种小技巧
angular的工具函数 在angular的API文档中,在最前面就是讲的就是angular的工具函数,下面列出来 angular.bind //用户将函数和对象绑定在一起,返回一个新的函数 angu ...
- angular源码分析:angular中的依赖注入式如何实现的
一.准备 angular的源码一份,我这里使用的是v1.4.7.源码的获取,请参考我另一篇博文:angular源码分析:angular源代码的获取与编译环境安装 二.什么是依赖注入 据我所知,依赖注入 ...
- Twitter Storm源代码分析之ZooKeeper中的目录结构
徐明明博客:Twitter Storm源代码分析之ZooKeeper中的目录结构 我们知道Twitter Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeepe ...
- 分析Linux内核中进程的调度(时间片轮转)-《Linux内核分析》Week2作业
1.环境的搭建: 这个可以参考孟宁老师的github:mykernel,这里不再进行赘述.主要是就是下载Linux3.9的代码,然后安装孟宁老师编写的patch,最后进行编译. 2.代码的解读 课上的 ...
随机推荐
- git技巧记录--子模块删除方法
把子模块推进去了,删掉吧(将子模块删除,然后提交推送),删除子模块步骤: 1.在Platform.Web库下,右键->Git Bash,进入git命令行窗口,输入:git rm –-cached ...
- ajax异步上传到又拍云的实例教程
作者:白狼 出处:www.manks.top/article/async_upload_to_upyun 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否 ...
- Asp.net MVC验证那些事(4)-- 自定义验证特性
在项目的实际使用中,MVC默认提供的Validation Attribute往往不够用,难以应付现实中复杂多变的验证需求.比如, 在注册用户的过程中,往往需要用户勾选”免责声明”,这个checkbox ...
- spring Quartz 调度
Quartz 是开源任务调度框架中的翘首,它提供了强大任务调度机制,同时保持了使用的简单性.Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射.此外,Quartz ...
- 小说一下case ~
case 这个关键词,用的地方不少~大部分的用途都通过以下的方式去应用 SELECT CASE @i END AS 测试1; 测试1 ----------- DECLARE @Hour INT = D ...
- 记录Sqlserver2012附加Sqlserver2008的数据库出错的解决方案
一.摘要 最近在实验里面用台式编写好了一个软件,想移植到家里的笔记本上.在附加数据的时候却出现了错误,具体也没有提示什么错误,反正就是附加失败了. 二.解决方案 在网上看了一些资料,有的说[低版本不能 ...
- oracle学习笔记系列------oracle 基本操作之基本函数的用法
--创建一个accout账户表 CREATE TABLE account( id ) NOT NULL, recommender_id ), login_name ) NOT NULL, login_ ...
- iOS 判断内容是否是中文,两种实现
用category实现 新建类别文件,代码 .h文件 #import <Foundation/Foundation.h> @interface NSString (Valid) - (BO ...
- 五、Android学习第四天补充——Android的常用控件(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 五.Android学习第四天补充——Android的常用控件 熟悉常用的A ...
- Java 集合系列13之 WeakHashMap详细介绍(源码解析)和使用示例
概要 这一章,我们对WeakHashMap进行学习.我们先对WeakHashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用WeakHashMap.第1部分 WeakHashMap介绍 ...