支持ECMAScript6的一些新特性。比如箭头函数,函数缺省参数之类的吗
现在回答有点迟到,但是希望能帮助下别人吧,我自己尝试的方法让cocos2d-js支持ES6语法。
HOW TO
-
下载
cocos2d-x
(这里以cocos2d-x-3.16为例),然后假设解压到d:\cocos2d-x-3.16
并完成安装。 -
下载最新版的google closure compiler,解压后将里面的jar包改名为
compiler-es6.jar
并拷贝到D:\cocos2d-x-3.16\tools\cocos2d-console\plugins\plugin_compile\build_web\bin目录下
。 -
修改
D:\cocos2d-x-3.16\tools\cocos2d-console\plugins\plugin_compile\build_web\template\build.xml
文件,将languagein="ECMASCRIPT5"
改成languagein="ECMASCRIPT6"
。并在此行下一行添加一行languageout="ECMASCRIPT5"
,修改完的xml节点大约这个样子。```xml <jscomp compilationLevel="%compilationLevel%" warning="quiet" debug="%debug%" output="%publishDir%/%outputFileName%" languagein="ECMASCRIPT6" languageout="ECMASCRIPT5" %sourceMapCfg% > <sources dir="%engineDir%"> %ccJsList% </sources> <sources dir="${basedir}"> %userJsList% </sources> </jscomp> ```
-
修改
D:\cocos2d-x-3.16\tools\cocos2d-console\plugins\plugin_compile\build_web\__init__.py
文件,函数check_jdk_version()
返回代码return jdk_version
修改为return "es6"
。改完大约这个样子```python def check_jdk_version(): commands = [ "java", "-version" ] child = subprocess.Popen(commands, stderr=subprocess.PIPE) jdk_version = None for line in child.stderr: if 'java version' in line: if '1.6' in line: jdk_version = JDK_1_6 else: jdk_version = JDK_1_7 child.wait() if jdk_version is None: raise cocos.CCPluginError(MultiLanguage.get_string('COMPILE_ERROR_NO_VALID_JDK'), cocos.CCPluginError.ERROR_TOOLS_NOT_FOUND) return "es6" ```
-
cocos compile -p web -m release
构建项目就可以了,es6的语法可以编译通过。
总结
cocos2d-js release web项目的时候就是以
D:\cocos2d-x-3.16\tools\cocos2d-console\plugins\plugin_compile\build_web\template\build.xml
文件为模板,通过D:\cocos2d-x-3.16\web\tools\genBuildXml.js
脚本生成项目需要的build.xml
并拷贝到项目的publish
目录中,ant
调用这个构建配置文件来发布项目。这里只是下载了最新的google closure compiler
并设置build.xml
模板,让项目构建的时候使用最新的compiler
并支持es6
。
注意
最新的
google closure compiler
要求JS文件编码是UTF-8
,不然会报编译错误。
这里的markdown格式有点古怪。。。我也搞不懂怎么回事。应该不影响看。