分析cocos2d-x中的CrystalCraze示例游戏
cocos2d-x自带了不少示例,以及几个比较简单的游戏,不过这些游戏都是用javascript binding(SpiderMonkey)做的,所以我猜测javascript binding可能是cocos2d-x开发游戏的主流模式,优点是:
- 游戏逻辑用javascript,开发效率高,无需编译直接跑
- 因为使用了javascript binding,实际跑的还是C++代码,性能不容小觑
- javascript binding使用的api与cocos2d-html5一致,以后向cocos2d-html5移植转换成纯网页游戏的成本接近于0
CrystalCraze用的系统自然也是js binding。
一、代码目录结构
cocos2d-xsamplesJavascript*1 CrystalCrazeClassesproj.androidproj.iosproj.win32Sharedgames*2 CrystalCrazeCrystalCraze.ccbprojImagesPlatformPublished-AndroidPublished-iOSResourcesscriptingjavascriptbindings*3 jsjsb.jsjsb_chipmunk.jsjsb_chipmunk_constants.jsjsb_cocos2d.jsjsb_cocos2d_constants.jsjsb_cocos2d_extension.jsjsb_cocosbuilder.jsjsb_debugger.jsjsb_opengl.jsjsb_opengl_constants.jsjsb_sys.jsmain.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
转载于:https://www.cnblogs.com/baiyanhuang/p/3199448.html
分析cocos2d-x中的CrystalCraze示例游戏相关推荐
- python 标签数量_python实现的批量分析xml标签中各个类别个数功能示例
本文实例讲述了python实现的批量分析xml标签中各个类别个数功能.分享给大家供大家参考,具体如下: 文章目录 需要个脚本分析下各个目标的数目 顺带练习下多进程,自用,直接上代码: # -*- co ...
- 简易理解设计模式之:责任链模式——OA中请假流程示例
介绍: 责任链模式属于行为型设计模式.它的定义为:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理它为止. 类图: ...
- R语言构建生存分析(survival analysis)模型示例
R语言构建生存分析(survival analysis)模型示例 生存分析处理的是预测特定事件将要发生的时间.它也被称为失败时间分析或死亡时间分析.例如,预测癌症患者存活的天数,或者预测机械系统将要失 ...
- 【Android 安全】DEX 加密 ( Application 替换 | 分析 ContentProvider 组件中调用 getApplication() 获取的 Application 二 )
文章目录 一. ActivityThread 中的 installProvider 方法 ( 创建 ContentProvider 内容提供者 ) 二. installProvider 方法的第三分支 ...
- (译)如何使用cocos2d来制作一个打地鼠的游戏:第一部分
免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...
- 翻译:如何用Cocos2d来开发简单的IPhone游戏教程
这一周接触到Cocos2D开发,在它的官网上看到Ray Wenderlic写的关于cocos2d开发的文章,感觉写的挺好,翻译了一下. 原文链接地址大家可以在上面看到作者的更多内容 初次翻译文章,望 ...
- Java敌人跟地图的碰撞_(译)加入敌人和战斗:如果使用cocos2d制作基于tiled地图的游戏:第三部分...
免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...
- 谷歌云请更正这张卡片的信息_如何识别和更正Google Analytics(分析)报告中的(未设置)值
谷歌云请更正这张卡片的信息 Have you ever noticed the (not set) value instead of actual value in Google Analytics? ...
- (译)如何使用cocos2d制作基于tile地图的游戏教程:第一部分
免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...
最新文章
- php auth_http,php auth_http类库进行身份效验
- Ubuntu侧边任务栏自动隐藏
- 如何使用eclipse打开已有工程
- MySQL查看和修改表的存储引擎
- python观察日志(part23)--更改图片尺寸并保存
- oracle的操作大全,Oracle数据库操作大全(六)Oracle中操作数据
- CMakeList.txt中设置一个可变的变量的值(bool)
- 装NOILinux的奇妙经历
- 苹果6s强制删除id锁_回收宝:苹果6S手机从细节查真假
- python利用微信的方法_作为程序员,如何利用Python玩转微信,让你的微信与众不同...
- 线程库 c语言实现,130行C语言实现个用户态线程库——后续(一)
- Atitit 获取ip的http标头 目录 1.1. REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP	1 1.2. HTTP_CLIENT_IP 客户ip。握手ip	1 1.3
- 电脑装机必备软件清单
- Google ptorobuf相关知识
- Vulhub-coldfusion--CVE-2017-3066
- andriod获取带字母的iccid
- coso js 魔窗
- iOS数据模拟 Mock方案
- 2年java开发工作经验
- 中台的问题,是技术的问题,还是人的问题
热门文章
- Python数据分析学习
- 后端:414 Request-URI Too Large解决方案
- 五种类型的程序员,你属于哪一种?
- app上线发布流程_APP上线发布流程
- 生产三码 黑苹果_黑苹果OC配置工具:OpenCore Configurator v2.15.2.0
- 集群服务器分布式iis_Nginx+IIS分布式部署和负载均衡
- linxu其他用户登录mysql_Linux系统的MySQL用户如何开启远程登录权限
- 跟我一起学WCF(2)——利用.NET Remoting技术开发分布式应用
- Tomcat乱码解决
- 深入分析JavaWeb Item7 -- HttpServletResponse详解