【问题标题】:Can we export from flash to createjs from the command line?我们可以从命令行从 flash 导出到 createjs 吗?
【发布时间】:2023-12-07 19:43:01
【问题描述】:

我正在寻找一种方法来自动执行从命令行运行 toolkit for flash for createjs 的任务。

我有很多单独的组件,我想以批处理的方式导出它们。这个可以吗?

【问题讨论】:

    标签: javascript node.js flash createjs command-line-interface


    【解决方案1】:

    自动化的最佳选择是使用。以下脚本从this thread 修改,提示输入目标文件夹和输出文件夹,然后在执行时自动执行打开 *.fla 文件并通过 CreateJS 发布者发布它们的过程。需要注意的是,CreateJS 面板必须已经在 Flash 中打开(尽管也有办法做到这一点)。

    还值得注意的是,您可以轻松地修改此代码以硬编码所需的路径,或阅读JSFL Docs 或动态加载清单文件。如果您真的想从命令行运行它们,也可以从批处理中执行它们。

    exporter.jsfl

    var folderURI = fl.browseForFolderURL("Please select the folder you want to recurse");
    var outputURI = fl.browseForFolderURL("Please select the output path");
    
    var allFlas = FLfile.listFolder(folderURI + "/" + "*.fla", "files");
    for(var i = 0; i < allFlas.length; i++)
    {
        var flaName = allFlas[i];
    
        var doc = fl.openDocument(folderURI + "/" + flaName);
        var targetName = doc.name.replace(".fla","");
        var cjsDataKey = "CreateJSToolkit_data";
        //var data = doc.getDataFromDocument(cjsDataKey);
        var data = [
                "version", "0.6",
                "exportHTML", "true",
                "frameBounds", "false",
                "includeHiddenLayers", "false",
                "soundsPath", "sounds/",
                "preview", "false",
                "imagesPath", "images/",
                "libraryPath", "libs/",
                "compactPaths", "false",
                "exportSounds", "true",
                "imagesNS", "images",
                "exportLibs", "true",
                "libNS", "lib_" + targetName.toLowerCase(),
                "hostedLibs", "true",
                "exportImages", "true",
                "outputPath", outputURI,
                "createjsNS", "createjs"
        ];
        doc.addDataToDocument(cjsDataKey, "string", data.join("\n"));
        doc.save();
        doc.close(false);
        // Re-open document so that Publish for CreateJS panel picks up changes.
        doc = fl.openDocument(folderURI + "/" + flaName);
        fl.runScript(fl.configURI + "Commands/Publish for CreateJS.jsfl");
        // Insert an artificial pause here. Seems to be necessary for Toolkit publish.
        alert("Complete!");
        doc.close(false);
    }
    

    【讨论】: