cocos2d-3.12的JS支持ECMAScript6嘛?

支持ECMAScript6的一些新特性。比如箭头函数,函数缺省参数之类的吗

现在回答有点迟到,但是希望能帮助下别人吧,我自己尝试的方法让cocos2d-js支持ES6语法。

HOW TO

  1. 下载cocos2d-x(这里以cocos2d-x-3.16为例),然后假设解压到d:\cocos2d-x-3.16并完成安装。

  2. 下载最新版的google closure compiler,解压后将里面的jar包改名为compiler-es6.jar并拷贝到D:\cocos2d-x-3.16\tools\cocos2d-console\plugins\plugin_compile\build_web\bin目录下

  3. 修改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>
    ```
    
  4. 修改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"
    ```
    
  5. 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,不然会报编译错误。

2赞

这里的markdown格式有点古怪。。。我也搞不懂怎么回事。应该不影响看。