2

Cocos2d-JS 是 Cocos2d-x 引擎的 JavaScript 版本,包含 Cocos2d-html5 和 Cocos2d-x JavaScript Bindings。它为您的游戏配备了跨浏览器和跨平台的能力,并附带完整的 Cocos2d-x 功能和简化的 JavaScript 友好 API。

我知道您编写 JS 并且它可以在任何地方工作,但它是如何完成的?我想了解这张图: http: //www.cocos2d-x.org/wiki/Getting_Started_Cocos2d-js据我了解,cocos2d-html5 与 cocos2d-x 相同,但它是在 JS 中并基于 WebGL。如果这是真的,那么 Cocos2d-JSB 是什么?它是否将 JS 脚本编译为本机代码?还是 JS 扩展解释器,比原生解释器更懂,可以解释 cocos2d 特定的命令?

4

2 回答 2

1

据我了解 cocos2d-html5 与 cocos2d-x 相同,但它是在 JS 中并基于 WebGL。如果这是真的,那么 Cocos2d-JSB 是什么?

我相信附加到cocos2d-x JSB 的 JSB只是意味着:cocos2d-x JavaScript Bindings

在两种编程语言之间进行翻译/调解的模块通常称为“绑定”。JSB 只是 cocos2d-x 的一个小方面,它允许用户通过 cocos2d-x C++ 渲染引擎运行用 cocos2d-js Javascript 编写的应用程序。

注意 cocos2d-html5 和 cocos2d-x 并不完全相同。它提供了与 cocos2d-x 类似的功能,但只能在 Web 浏览器中运行。显然 cocos2d-html5 没有触摸或加速度计输入的功能,以及在保存和加载文件时的其他限制,例如。

它是否将 JS 脚本编译为本机代码?还是 JS 扩展解释器,比原生解释器更懂,可以解释 cocos2d 特定的命令?

JSB 只是在 Javascript API 和 C++ cocos2d-x 版本的类、方法、标识符等之间进行映射。

我不知道它是否将 Javascript 编译为本机代码。

这个要点:

cocos2d-js 在 Javascript 中提供了一个编程接口(API),无论您通过 cocos2d-html5 在浏览器中运行它还是通过 cocos2d-x 在其他(移动)平台上运行它,都会产生相同的结果。

于 2014-10-28T17:31:13.817 回答
0

Cocos2d-x 使用 Firefox JS 虚拟机 (VM) SpiderMonkey 来执行 JS 代码。

JS VM 扩展为支持所有 cocos2d、Chipmunk 和 CocosBuilder Reader API。因此,当您在 JS 中创建 CCSprite 时,您实际上是在创建 C++ CCSprite。在 JS 中创建动作时,实际上是在创建 C++ 动作,在 JS 中创建粒子系统时,实际上是在创建 C++ 粒子系统……等等。这种方法比 HTML5 游戏快大约 10 倍 ~ 20 倍,即使它们使用像 directCanvas 这样的加速器基本上所有的 cocos2d、Chipmunk 或 CocosBuilder 阅读器 API 都将几乎以本机速度执行。但是您应该注意以下情况: 垃圾收集器运行时性能可能会变慢。解决方法:不要创建很多 JS 对象。尽可能多地重用拥有复杂的主循环可能会降低性能。解决方法:分析您的 JS 代码,如果您无法进一步优化它,

这是来自维基。所以扩展了 JS 解释器来理解 cocos2d 的 api 命令,例如 create Action 或 create Sprite。

于 2014-10-28T20:10:26.483 回答