我已经在网上搜索了大约 2 个小时,现在正在寻找扩展程序 (MXP) 或 JSFL 脚本来帮助我将舞台上的 300 多个形状转换为符号。名称并不重要,它们可以是 symbol_001、002 等。这似乎是一项常见的任务,令我惊讶的是还没有人在 stackoverflow 上询问,甚至在 actionscript.org 上询问。
我遇到了这个,但它不是我需要的...它一次只执行一个符号...: http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&loc=en_us&extid=1848523
虽然这个可以实现我想要的功能,但是对于位图,并且仅限于库中的位图。 http://benclinkinbeard.com/2006/07/flash-extension-convert-bitmaps-to-symbols/
请帮忙!
最佳答案
首先,这 300 多个形状是在同一时间线和帧上吗? 其次,这些形状是否分组?
var el = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements;
for(var i = 0; i<el.length; i++)
{
fl.trace(i+" - " + el[i]);
}
这将枚举第一帧第一层时间线上的所有元素(包括形状)。
现在,未分组的形状将被视为单个形状,矩形或椭圆形图元将是单独的。
这是 Element object 的文档还有这个Shape object doc .
以下是我使用修改后的convertToGraphics方法找到的工作示例示例here :
var el = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements;
for(var i = 0; i<el.length; i++)
{
fl.trace(i+" - " + el[i]+", "+el[i].isGroup);
convertToGraphics(el[i], "shape"+i);
}
//converts all current elements on the current timeline to movie clips with a effectSymbols move to Effect folder in the library and center registration point
function convertToGraphics(el, name)
{
try
{
var symbolName = name;
var cur_lib = fl.getDocumentDOM().library;
fl.getDocumentDOM().selectNone();
fl.getDocumentDOM().selection = [el];
while(cur_lib.itemExists(symbolName+i))
symbolName=symbolName+1;
var newSym = fl.getDocumentDOM().convertToSymbol("movie clip", symbolName+i, "center");
}
catch (e)
{
fl.trace("Exception in : convertToGraphics" + e);
}
}
最诚挚的问候
附: 2个小时的搜索是不够的
关于actionscript-3 - 在 Flash CS5 中将多个形状和组转换为影片剪辑/符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12967890/