我有一系列大文件正在发布到swc中,然后直接在flash项目中使用。可能总共有1000多个对象。随着数量的增加,最终编译的swf变得非常大,所以我只想根据需要下载每个对象的单个swf。然后,我需要能够通过最终AS项目中的classname访问和克隆对象。
问题是我找到导出每一个的唯一方法是1)将其复制并粘贴到新的fla文件中2)双击“编辑”它以强制它包含,3)重置链接(类) )名称,因为它被擦除,4)发布(即文件 - >发布)并命名这个swf 对于1000多个这样的人来说,这需要相当长的时间。
虽然您可以右键单击库中的每个项目以将其另存为swf,但它似乎不包括类名等,只包括项目。一旦我下载了这个,我就无法克隆再使用它一次而不再下载它是不可接受的。
是否有更快/更好的方法来生成这些swf?
(我确实简要地研究了xfl但看起来像编写一个脚本来执行此操作,因为一些未知数将需要更长时间,然后手动完成。)
答案 0 :(得分:1)
你应该看看JSFL,它允许你扩展Flash /编写一个脚本,为你自动完成这项任务。
例如,您可以编写一个循环遍历库中元素的脚本,并仅为为actionscript导出的动画片段导出swf,并生成一些LoaderMax代码,该代码在导出时放在剪贴板中完成:
var doc = fl.getDocumentDOM();
var dir = 'file:///' + doc.path.substr(0,(doc.path.lastIndexOf('/')+1));
var lib = doc.library;
var code = 'var queue:LoaderMax = new LoaderMax({name:"queue"});\n';
var items = lib.items;
var iNum = items.length;
var path;
var name;
fl.outputPanel.clear();
for(var i = 0 ; i < iNum ; i++){
if(items[i].linkageExportForAS){
name = items[i].linkageClassName;
path = dir+name+'.swf';
items[i].exportSWF(path);
code += 'queue.append( new SWFLoader("'+name+'.swf", {name:"'+name+'"));\n';
}
}
fl.clipCopyString(code);
fl.outputPanel.trace('symbols exported as swfs, code is in your clipboard');
将其保存为.jsfl文件以运行它,将其放在Flash(IDE)的命令文件夹中,它将在界面的“命令”菜单中弹出。
这并不完美,但它提供了可以做什么的想法。首先是建立我想象的工作流程,然后为它编写脚本。
我有一些事情我不明白,我试图将其分解:
我有一系列大文件 那些被发表到swc的 然后直接在闪光灯中使用 项目。可能总共1000+ 对象。随着数量的增长最终 编译swf变得非常大 我想下载个人的swf 每个对象仅在需要时使用。
因此,有些资产需要稍后进行编码。 我想swc将包含为actionscript导出的多个MovieClip 并且可能有更多具有不同类型资产的fla文件。
然后我需要能够访问和 通过classname克隆对象 最终的AS项目。
您的意思是使用getDefinition?
从swf文件中实例化类问题是我找到的唯一方法 导出每一个是1)复制和 将其粘贴到新的fla文件中2)double 点击“编辑”它以强制它 包括,3)重置连接(类) 名字,因为它被擦除,4)发布 (即file-&gt; publish)并将其命名 瑞士法郎。
对于第1步,您是否可以右键单击MovieClip并选择ExportSWF / ExportSWC(取决于您的需要)? 我不明白你的意思是'强制它包括'。 你的意思是tick for Actionscript?谁/什么擦除链接?