是否可以从命令行发布 FLA?
Posted
技术标签:
【中文标题】是否可以从命令行发布 FLA?【英文标题】:Is it possible to publish a FLA from the command line? 【发布时间】:2010-09-20 16:53:07 【问题描述】:在我们的项目中,我们有大量(数百个)由艺术家在 CS3 中创建的 FLA 文件,我们从中编译 SWF 以在我们的 Flex/AS3 应用程序中使用。
作为简化的构建/部署系统的一部分,能够自动发布所有这些 FLA 并在理想情况下部署 SWF 将非常方便。我找到了一些使用 JSFL 从 CS3 批量发布的方法,但惊讶地发现 CS3 显然没有任何命令行功能?
这是在 Linux 系统上的价值,我没有使用 JSFL 的经验,不知道您是否可以以某种方式从命令行运行脚本?
注意:我应该说“首选 Linux”...我不使用 Linux,但我们的服务器/构建 PC 是 Linux...我没有意识到 CS3 不兼容所以我想我们可以在 Windows 上完成这部分。
【问题讨论】:
【参考方案1】:像这样从命令行执行您的 JSFL 脚本:
在 Windows 上:"c:\program files\macromedia\flash 8\flash.exe" myscript.jsfl
在 Mac 上:open myscript.jsfl
我相信旧版本的 Flash 在 Wine 上运行没问题,但对 CS3 不太确定。
要遍历一批本地文件,请尝试以下操作(在 JSFL 中):
var importFolder = fl.browseForFolderURL('Select a folder with existing FLA files');
var importFolderContents = FLfile.listFolder(importFolder);
for (i = 0; i <importFolderContents.length; i++)
file = importFolderContents[i];
fl.openDocument(file); // and so on
您可能想要研究的其他一些方法是..
fl.getDocumentDOM() document.exportSWF() document.publish() fl.closeDocument()
【讨论】:
【参考方案2】:您是如何在 Linux 上运行 Flash CS3 的? 您不能从命令行运行 JSFL,但应该可以编译 FLA 文件
一些老例子 http://www.mikechambers.com/blog/2003/11/01/flashcommand-flash-2004-command-line-compiler/
迈克·钱伯斯的新作品 http://code.google.com/p/flashcommand/ 用于 OSX
所以似乎只有通过半自动化的 IDE 发布才有可能,
太糟糕了,Flex 编译器不能做这样的事情,再加上 ANT 任务,它是一个杀手...... 使用 FDT 编辑器,一切都非常酷且自动化
【讨论】:
【参考方案3】:就像已经说过的那样,可以使用 JSFL 脚本,尽管您仍然需要有与 Adobe Flash Professional 通信的命令行工具来将进程记录到标准输出并根据编译结果提供退出代码。
我最终自己编写了这个工具https://www.npmjs.com/package/flc。它基本上是一个将 Adobe Flash Professional 抽象出来的命令行界面。针对 Flash Pro 2014 和 2015 进行了测试。
【讨论】:
【参考方案4】:是的,当然。事实上,我已经构建了一个端到端的解决方案,只需单击一个按钮,就会使用版本时间戳更新类文件,如果 Flash 尚未打开,则打开它,打开单个文件进行发布,发出信号当每个文件完成发布时,通过进程间通信实现自动化程序,这样您就不会遇到任何时间问题,并在完成后将特定文件部署到网络(在自动备份它们并为文件名加上时间戳之后),以及整个过程不到 10 秒即可完成。
在这里查看我的问答:Automating publishing of FLA files; calling Process.Start multiple times
【讨论】:
以上是关于是否可以从命令行发布 FLA?的主要内容,如果未能解决你的问题,请参考以下文章