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-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

主要是打*的三个目录:

  1. 游戏各平台的工程文件,以及C++启动代码(用来初始化引擎,以及启动js脚本引擎)
  2. 游戏资源,包括图片,声音,场景文件(ccb,)以及包含游戏主逻辑的javascript文件
  3. javascript binding的接口 - 运行时拷贝到同一目录下去。

二、主要代码文件及流程

  1. 首先build的时候,会把资源、jsbinding都拷贝到游戏目标目录下。
  2. 在AppDelegate.cpp中启动引擎,设置好读取资源的文件夹,然后启动js binding引擎,跑main.js
  3. main.js读取MainScene.ccb场景,运行MainScene.js进入主场景
  4. 选取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示例游戏的更多相关文章

  1. Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...

  2. 如何在cocos2d项目中enable ARC

    如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...

  3. angular源码分析:angular中脏活累活的承担者之$interpolate

    一.首先抛出两个问题 问题一:在angular中我们绑定数据最基本的方式是用两个大括号将$scope的变量包裹起来,那么如果想将大括号换成其他什么符号,比如换成[{与}],可不可以呢,如果可以在哪里配 ...

  4. angular源码分析:angular中入境检察官$sce

    一.ng-bing-html指令问题 需求:我需要将一个变量$scope.x = '<a href="http://www.cnblogs.com/web2-developer/&qu ...

  5. Android 自定义View及其在布局文件中的使用示例(二)

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3530213.html From crash_coder linguowu linguowu0622@gami ...

  6. angular源码分析:angular中各种常用函数,比较省代码的各种小技巧

    angular的工具函数 在angular的API文档中,在最前面就是讲的就是angular的工具函数,下面列出来 angular.bind //用户将函数和对象绑定在一起,返回一个新的函数 angu ...

  7. angular源码分析:angular中的依赖注入式如何实现的

    一.准备 angular的源码一份,我这里使用的是v1.4.7.源码的获取,请参考我另一篇博文:angular源码分析:angular源代码的获取与编译环境安装 二.什么是依赖注入 据我所知,依赖注入 ...

  8. Twitter Storm源代码分析之ZooKeeper中的目录结构

    徐明明博客:Twitter Storm源代码分析之ZooKeeper中的目录结构 我们知道Twitter Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeepe ...

  9. 分析Linux内核中进程的调度(时间片轮转)-《Linux内核分析》Week2作业

    1.环境的搭建: 这个可以参考孟宁老师的github:mykernel,这里不再进行赘述.主要是就是下载Linux3.9的代码,然后安装孟宁老师编写的patch,最后进行编译. 2.代码的解读 课上的 ...

随机推荐

  1. mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)

    随着mysql的长期使用,可以修复表来优化,优化时减少磁盘占用空间.方便备份. REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化 ...

  2. ORACLE 查看RMAN的备份信息总结

    关于Oracle数据库的RMAN备份,除了邮件外,是否能通过其它方式检查RMAN备份的成功与失败呢?其实我们可以通过下面SQL脚本来检查某个时间段备份失败的记录: SELECT * FROM V$RM ...

  3. SQL Server(三)——增、删、改、查

    一.数据库操作 create database 数据库名称 ——创建drop database 数据库名称 ——删除use 数据库名称 ——使用go 两条SQL语句之间分隔 二.表的操作 create ...

  4. linux性能监控工具

    1.uptime 该命令直观的显示了服务器在过去15分钟,5分钟,1分钟内的平均负载   2.vmstat 每隔2秒输出vmstat的信息,共输出10次. 类别 procs swap io   sys ...

  5. lnmp之php5.3.27 编译信息

    ./configure \--prefix=/application/php5.3.27 --with-mysql=application/mysql \--with-iconv-dir=/usr/l ...

  6. 《java JDK7学习笔记》之跨平台与路径设置

    Platforms表示Solaris.Linux.Windows各种操作系统平台,在这些平台上架构了java Virtaul Machine,简称JVM,Java虚拟机. Java虚拟机可以让java ...

  7. W3School-CSS 文本实例

    CSS 文本实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) 实例 CSS 内边距 (paddi ...

  8. 一致性算法Paxos详解

    分布式系统除了能提升整个系统的性能外还有一个重要的特性就是提高系统的可靠性,可靠性指的是当分布式系统中一台或N台机器宕掉后都不会导致系统不可用,分布式系统是state machine replicat ...

  9. android MotionEvent 获取长按压时间长

    思路: 1.记录ACTION_DOWN的aX, aY坐标: 2.在ACTION_MOVE判断是否移动,移动则取消记录时间,没移动就记录: 3.记录时间,按下坐标,移动坐标分别显示在TextView a ...

  10. Python 标准异常

      异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的 ...