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. WPF学习之路(一) 初识WPF

    参考<葵花宝典-WPF自学手册> VS2012 先创建第一个WPF小程序 1.创建WPF程序 2.查看Solution,WPF中xaml文件和cs文件经常成对出现 两个主要的类:APP(W ...

  2. 从MVC框架看MVC架构的设计

    尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点.本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些 ...

  3. Windows Phone 8.0 SDK Update(10322) Released

    昨天微软低调发布了WP 8 SDK的更新,甚至在Windows Phone Developer Blog上都没有提及. 从开发者的角度来看,此次更新的确没有太多需要关注的地方,因为没有添加新的API和 ...

  4. Windows Phone Studio-任何人都能开发Windows Phone App的在线工具

    在一段时间的内测以后,微软于今天早些时候发布了其Windows Phone应用开发的在线工具,名字叫做Windows Phone Studio.其意义在于,通过简单的内容添加和样式选择,实现Windo ...

  5. 2、HDFS和Yarn的基础学习笔记

    日志 --排错 .log:通过log4j记录的,记录大部分应用程序的日志信息 .out:记录标准输出和标准错误日志,少量记录     hdfs 常用shell     -ls     -put < ...

  6. Uploadify v3.2.1 参数说明

    一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 . buttonClass ” 按钮样式 buttonCursor ‘ ...

  7. 睡觉问题早晚成为我顶头疼的问题。。。-PHP

    hi 昨晚又作自己,睡不好整个人都不好... 1.PHP实现页面静态化 二.纯静态化 2.2 实现页面纯静态化的原理 --基本方式 file_put_contents()函数: 使用php内置缓存机制 ...

  8. 记一次惨痛的线上bug

    讲述背景,刚入职新公司2个月的时候,接手一个红包系统.资历尚浅,对业务也不是很熟悉.公司开发新的平台,需要使用红包功能来进行推广,按照产品的需求,进行开发...然而,问题就出在这里,红包接口比较陈旧, ...

  9. C++11 之 scoped enum

      C++11 枚举类型是“域化的” (scoped enum),相比 C++98 枚举类型的“非域化” (unscoped enum),具有如下优点: 1  命名空间污染  一般来说,声明在花括号内 ...

  10. Appium学习实践(四)结构优化

    随着我们测试脚本中的用例越来越多,我们不可能将所有的用例都放在同一个脚本中,所以我们需要优化我们的结构.将脚本放在一个文件夹中,再通过别的脚本来执行脚本.这样,我们也可以有选择性的执行我们的脚本 先来 ...