如何访问Flash CS3中的组成员

我正在编写一个脚本来访问flash(fla)文件库中的所有动态文本字段并嵌入某些字符集。

我遍历所有查找文本字段的对象,但似乎在尝试访问组对象的成员时遇到了一些问题。 它的Flash文件中有子项,但我无法从jsfl的CS3参考中定义的Group对象中看到它们。 组中有一个未公开的图层属性,但它似乎只包含对其本身的引用。

CS4参考定义组对象的成员属性。

所以我的问题是,它如何访问Flash C3 jsfl脚本API中的Group对象的子项?


只需首先取消组合()形状。 然后,您可以在之后运行正常的“文本”转换。 它不应该伤害文档,因为分组没有真正的技术含义。

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对象,那么它里面没有任何动态texfields(或者它里面的flash对象就像孩子一样)

可能会让你感到困惑的是,认为在舞台上对物体进行分组会形成一个Shape,但事实并非如此。 舞台上的对象“组”仅存在于Flash编辑界面中,以便于编辑和工作流程。 一旦你发布它们实际上并没有分组在swf / actionscript中。

更令人困惑的是,当你在舞台上有多个矢量项时,或者甚至在某些情况下,舞台上的位图项目时,Flash将会简化它们,并将其展平为单个Shape对象。 这进一步增加了这样一种错觉:分组对象创建一个Shape对象,每个对象都是一个子对象,因此Shape对象可以有子对象,但实际上它所做的全部事情都是将它们拼合成一个Shape,它并没有把它们当作单个物体。 而且这种情况从来没有发生过动​​态文本字段,所以很简单,如果你点击一个Shape对象,那么在那里没有动态文本字段,移动:)


你确定你正在使用Shapes? 除了图形之外,形状不应该有任何实际的孩子(它有一个图形属性,如Sprite),它们并不真正算作儿童。 它们更像是图形属性的值。

Shape不会扩展DisplayObjectContainer,所以我很确定它不能像Sprite或MovieClip那样拥有子显示对象。

如果搜索TextField,您应该安全地跳过这些内容。

链接地址: http://www.djcxy.com/p/17739.html

上一篇: How to access group members in Flash CS3

下一篇: Flash combobox appearance bug when using a system that blocks access to stage