您的问题的答案是肯定的,JSFL 可以为您做到这一点。我会给你一个例子,并尽我所能在 jsfl 代码中注释以解释正在发生的事情。随时提出任何澄清问题。
因此,假设您的计算机上有一个文件夹,其中包含许多其他文件夹,这些文件夹都包含 FLA 文件。此代码将遍历该主包含文件夹中的所有文件夹,我们称其为“allFLAs”,然后将它们输出到名为“allSWFs”的文件夹中。下面的代码会将来自 allFLA 的原始文件夹保存在 allSWF 中。因此,如果 FLA 文件位于 allFLA/group1/file1.fla,那么在 allSWFs 中将包含 allSWFs/group1/file1.swf。如果您有相同名称的文件,它们就不会相互覆盖。您可以从 exportSWF 行中删除 + dirList[n] ,它会将所有 SWF 放入主 allSWFs 文件夹中。
此代码不会更改其运行的任何文件的发布设置,并在完成时关闭 Flash IDE。
// Main folder that holds the folders containing all the FLA files.
var folder = 'file:///C:/path/to/main/folder/allFLAs';
if (!null) {
// Create an array of all the folders that are contained in our main folder.
var dirList = FLfile.listFolder(folder, 'directories');
// Loop through each item in the array to find each FLA file.
for (var n = 0; n<dirList.length; ++n) {
// Create an array of all FLA files in the directory list array.
var list = FLfile.listFolder(folder+'/'+ dirList[n] + '/*.fla', 'files');
fl.outputPanel.trace('file:///C:/path/to/output/folder/allSWFs/'+ dirList[n]);
// Create containing folder for this file based on the name of the folder in the directory list array, in the new output folder.
FLfile.createFolder('file:///C:/path/to/output/folder/allSWFs/'+ dirList[n]);
var flaName;
var swfName;
for (var i = 0; i<list.length; ++i) {
flaName = list[i];
swfName = list[i].split('.')[0]+'.swf';
fl.outputPanel.trace(flaName+' exported as '+swfName);
// open the document, publish to SWF, and close without saving.
fl.openDocument(folder+'/'+ dirList[n] +'/'+flaName);
fl.getDocumentDOM().exportSWF('file:///C:/path/to/output/folder/allSWFs/'+ dirList[n] + '/'+swfName, true);
fl.closeDocument(fl.getDocumentDOM(), false);
}
}
}
fl.quit()