Cocos2d-JS是Cocos2d-x引擎的JavaScript版本,包括 Cocos2d-html5和Cocos2d-x JavaScript绑定。它装备你的游戏 具有跨浏览器和跨平台的能力,伴随着完整 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特定命令吗?
答案 0 :(得分: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在其他(移动)平台上运行它,都会产生相同的结果。
答案 1 :(得分: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 Reader API将会执行 几乎以原生速度。但是你应该注意以下几点 场景:垃圾时性能可能会变慢 收集器运行。解决方法:不要创建许多JS对象。重用为 尽可能多的具有复杂的主循环可能会减慢速度 性能。解决方法:配置您的JS代码,如果不能 进一步优化它,用C ++编写昂贵的部分并创建JS 绑定这些函数。
这是来自wiki.所以JS解释器扩展为了解cocos2d api命令,例如create Action或create Sprite。