【cocos2d-x从c++到js】01:迎接脚本时代的到来

简介:

随着移动领域进入的游戏公司越来越多,开发成本一路上涨。以C++为代表的老一代开发语言,将直面lua,js等脚本语言的冲击。

最近一年多来,移动端在做脚本化开发方案的公司越来越多。cocos2d开源社区很早就提出了用js打通各个分支版本的设想,底层执行方式是各个分支引擎的(-x,-iphone,html5),上层统一使用js,使得项目可以很方便的在各个引擎之间互换。

从游戏开发来看,c++和js各具优势,两者结合威力无穷。前不久,cocos2d社区进行了一次联合发布,迈出了关键的一步。本系列将是我学习cocos2d-x for js的一些心得体会。

cocos2d-x for js是cocos2d-x的一部分,他使用js做脚本,底层使用c++运行,在提升开发速度同时,保证了执行效率。

首先,我们下载cocos2d-x的最新版本

http://cocos2d-x.googlecode.com/files/cocos2d-2.1beta3-x-2.1.0.zip

 

该版本中有好几个js游戏的例子:CocosDragonJS,MoonWarriors,WatermelonWithMe

我们暂时不使用其他IDE了,对于cocos2d-x的开发者来说,手头最现成的工具就是vs。用vs2010打开工程,蛋疼的发现,里面既没有js代码,也没有c++代码。只有一个spidermonkey的js解释器,还有一个win32版cocos2d-x的壳。

 

好吧,首先我们需要导入js的源代码,很不幸,这个项目的js源码也没有放在MoonWarriors的目录下,而是在

cocos2d-2.1beta3-x-2.1.0\samples\TestJavascript\cocos2d-js-tests\games\MoonWarriors这个文件夹中

我们把这里面的代码导入到MoonWarriors项目中。

 

好吧,这个目录结构比较蛋疼。但是勉强能看了。

但是又遇到了另外一个问题,我们在js源代码中,没法.出来代码,自动完成功能几乎是无效的。番茄只能提示出当前js文件中的代码,在其他文件中的代码,没法提示出来。尤其是引擎中的js接口。这个实在太要命了。

我查了半天,发现cocos2d-2.1beta3-x-2.1.0引擎中,根本没有js版本的代码。也就是说,他们只是用spidermonkey把js的接口绑定成了c++的。这可如何是好呢?没代码就没法使用自动完成。

 

呵呵,之前我们说过,这次是一次联合发布,也就是说各个版本的js接口应该是一致的,也就是说我们可以使用html5版本的js代码,来协助完成代码提示。

去下一个html5引擎

http://cocos2d-x.googlecode.com/files/Cocos2d-html5-v2.1.zip

打开后发现,我们要的代码在这四个文件夹里

把他们也导入到项目中

 

然后,我们随便打开一个项目源代码,就可以.出来了。自动完成可以使用,哦也。

打完收工。

 

 







 本文转自 老G 51CTO博客,原文链接:http://blog.51cto.com/goldlion/1113786,如需转载请自行联系原作者


相关文章
|
7月前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
|
1月前
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
在浏览器执行js脚本的两种方式
|
6月前
|
编解码 C++
cocos2d-x C++ 工程初探
cocos2d-x C++ 工程初探
|
3月前
|
C++ Windows
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
|
3月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
3月前
|
JavaScript 前端开发
用JavaScript脚本将当地时间转换成其它时区
用JavaScript脚本将当地时间转换成其它时区
|
4月前
|
缓存 C++ Windows
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
|
5月前
|
JavaScript 前端开发 API
Node中的AsyncLocalStorage 使用问题之Node.js将 JavaScript 层的 nativeHooks 注册到 C++ 层的问题如何解决
Node中的AsyncLocalStorage 使用问题之Node.js将 JavaScript 层的 nativeHooks 注册到 C++ 层的问题如何解决
|
7月前
|
JavaScript 前端开发 NoSQL
【MongoDB 专栏】MongoDB 的 JavaScript 引擎与脚本执行
【5月更文挑战第11天】MongoDB 的 JavaScript 引擎允许在服务器端直接执行脚本,提升效率并实现定制化操作。脚本环境提供独立但与数据库关联的运行空间,引擎负责脚本的解析、编译和执行。执行过程包括脚本提交、解析、编译和执行四个步骤。掌握脚本逻辑设计和 JavaScript 语言特性对于高效利用这一功能至关重要。例如,通过脚本可以计算商品总销售额,增强数据库操作的灵活性。
119 1
【MongoDB 专栏】MongoDB 的 JavaScript 引擎与脚本执行
|
7月前
|
JavaScript 前端开发
Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界
在Web自动化中,Playwright提供`page.evaluate()`和`page.evaluate_handle()`来执行JavaScript脚本。`page.evaluate()`返回脚本执行结果,而`page.evaluate_handle()`返回JSHandle。示例展示了如何使用它们,如打印网页标题、操作元素及获取页面内容。通过这些方法,可以处理常规方法难以操作的网页元素。