cocos2dx学习笔记-整体结构

版本与平台

  • 源码版本:3.10
  • 平台:mac,ios

目录结构

从官方下载到cocos2dx最新版本解压以后,可以看到包的目录结构如下图所示。可以看到cocos源码结构清晰,例子完善,对于初学者来说,大大降低了学习的难度。

按照官方文档环境部署,并创建一个工程,在XCODE打开。

打开以后的工程结构如下图所示。

  • Classes 包含所有cocos的CPP代码
  • Resources 包含资源文件,图片、字体
  • cocos2d_libs.xcodeproj cocos2d引擎的源码,编译以后会生成libcocos2d iOS.a,为了节约硬盘,可以将此工程删除,直接将libcocos2d iOS.a引用到工程,所有项目共用一个lib和头文件,可以给128G Mac用户节约很多硬盘空间。
  • Frameworks IOS用到的Frameworks。
  • iOS iOS AppController、main、RootViewController代码。

框架结构

在源码的docs目录下有上图所示的框架结构图,从下往上看,

  • cocos2d支持目前大部分mobile、PC的系统,以及web平台。
  • 在底层,包括C++、JS两种引擎实现,JS引擎是提供cocos2d-html5实现的,运行在浏览器环境中,整个引擎用js完全重写,使用WebGL和Canvas作为图形引擎。
  • 在引擎上面,有JS API、Lua API以及C++API,这些API其实都是一样的,实现语言不同。其中JS API比较特殊,包括JSB和cocos2d-html5,JSB是采用firefox的SpiderMonkey作为js解释引擎在cocos2d-c++的基础上绑定。而Cocos2d-html5和JSB的实现不一样,但是API和JSB完全兼容,这样就能实现一套代码既能运行在IOS、Android(Cocos2dx JSB),又能运行在浏览器里)。
  • Lua API也是通过Lua脚本的解释引擎实现Lua与C++的绑定。而C++ API则直接由cocos2d C++提供。
  • 最上层则是我们运行的游戏程序了。

cocos2d-js与cocos2d-lua

在实际开发中,大部分都是使用cocos+js或cocos+lua来进行开发,对于这两种脚本语言要怎么选择呢?通过了解总结出以下几个优缺点,供看官自行选择。

  1. JS Binding最大的优势,就是可以直接通过cocos2d-x html5移植到网页;
  2. JS更容易实现面向对象,唯一的缺点是没有继承,调用父类方法等原生方法,这些需要用原型链来模拟实现,好在cocos2d-jsbinding已经帮我们实现了继承等功能,实际用的时候完全可以想面向对象语言去实现类的继承,重载,重写,父类调用等功能。
  3. Lua直接编译成字节码效率比 JS高 ;
  4. Lua就是作为嵌入式语言来设计的,所以与CC++非常容易交互;与Java/OC的交互,Lua也可以绕过CC++层直接交互,在集成第三方SDK、与IOS、Android原生交互时会省事。

官方Demo

相对于干巴巴的API文档,看官方提供的Demo对于初学者来说是更好的学习方法。在tests目录下有c++、JS、LuaDemo源码及在各平台的项目工程,直接打开编译以后可以看到bin目录下可执行程序。运行起来的界面如下图,

点击图中的按钮可以看到实际的运行效果,再去找源码参考,是非常有效的学习方法。

cocos2d-x整体情况简单介绍到此,接下来将通过源码对内部实现进行分析。

原文地址:https://www.cnblogs.com/zhiqli/p/5918097.html