解决方案
只是取消组合()的第一形状。然后,你可以事后运行正常的“文本”转换。它不应该伤害的文件,因为分组没有真正的技术问题。
var doc = fl.getDocumentDOM();
var results = fl.findObjectInDocByType("shape", doc);
for (var i = 0; i < results.length; i++)
{
if ( results[i].obj.isGroup )
{
doc.selection = [results[i].obj];
doc.unGroup();
}
}
其他提示
Shape对象没有孩子。所以,如果你在你的递归遇到一个Shape对象,那么它并没有在它里面的任何动态texfields(或Flash对象里面的孩子们对这个问题)
什么可能会造成混乱,你是认为在舞台上分组对象做一个形状,它不会。在舞台上对象的“组”只存在于以方便编辑和工作流程闪光灯编辑界面。一旦发布,他们实际上并没有在SWF /动作组合。
什么甚至可能更加令人困惑的是,当你在舞台上的多个矢量项目,甚至在舞台上某些情况下位图的项目,Flash将只是简而化之,夷为平地,一个单一的Shape对象。这进一步说明,分组对象的创建与每个人作为一个孩子一个Shape对象,并由此一个形状对象可以有孩子的幻想,但在现实中它所作的只是这一切与拉扁在其上的图形压扁成一个单一的形状,它不持有任何他们作为单个对象。而这种情况从来没有与一个动态文本发生,那么很简单,如果你打一个Shape对象,那么就没有一个动态文本那里,继续前进:)
您确定您使用形状的工作?形状不应该能够从图形(它有一个图形特性,似雪碧),它并不真正算作孩子有任何实际的孩子一边。它们更像是图形属性的值。
形状不延长的DisplayObjectContainer,所以我敢肯定它不能有子显示对象像雪碧或MovieClip例如。
您应该是安全的跳过那些如果搜索的TextField。
你暗示答案已经自己:使用该成员的财产上的形象。它返回一系列的对象包含在内,这可能或不可能案文的对象。
你没有指定你是否是使用。findObjectInDocByType()扫描文件文本的目的和形状(潜在的集团),但是这将是一个好主意。
我相信以下脚本将跟踪该文本值的所有领域的动态文本在佛罗里达州,除非有一些讨厌的嵌套的情况,我错过了。在任何情况下,它有希望让你去。被担心,你需要运行的脚从命令的菜单,以便于佛罗里达州。findObjectInDocByType()不要扔一个错误。请参见在上面的链接获取更多信息。
// Look for text objects
var doc = fl.getDocumentDOM();
var typeToSearchFor = "text";
var results = fl.findObjectInDocByType(typeToSearchFor, doc);
for(var i = 0; i < results.length; i++)
{
if(results[i].obj.textType == "dynamic")
{
doWhatever(results[i].obj);
}
}
// Look for shapes
typeToSearchFor = "shape";
results = fl.findObjectInDocByType(typeToSearchFor, doc);
var textObjects;
for(var i = 0; i < results.length; i++)
{
var members = results[i].obj.members;
for(var j = 0; j < members.length; j++)
{
if(members[j].elementType == "text" && members[j].textType == "dynamic")
{
doWhatever(members[j]);
}
}
}
function doWhatever(textObj)
{
fl.trace(textObj.getTextString());
}