我们可以从命令行从flash导出到createjs吗?

时间:2013-12-16 22:45:04

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

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

我有很多单独的组件,我想在批处理过程中导出它们。可以这样做吗?

1 个答案:

答案 0 :(得分: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);
}