Flash AS3嵌入访问子movieclips
所以我用这段代码来嵌入我的.swf文件。我正在为库中的每个资源创建类Flash AS3嵌入访问子movieclips,flash,apache-flex,actionscript-3,Flash,Apache Flex,Actionscript 3,所以我用这段代码来嵌入我的.swf文件。我正在为库中的每个资源创建类 [Embed('assets/assets.swf', symbol='game.menu.levels')] public static const LEVELS_MENU:Class; 它工作得很好,但我如何访问一个子元素的多个深度 到目前为止,我有以下几点: this.object = new R.LEVELS_MENU(); var child_element:MovieClip = this.object
[Embed('assets/assets.swf', symbol='game.menu.levels')]
public static const LEVELS_MENU:Class;
它工作得很好,但我如何访问一个子元素的多个深度
到目前为止,我有以下几点:
this.object = new R.LEVELS_MENU();
var child_element:MovieClip =
this.object.getChildByName("child_element") as MovieClip;
有没有比这更好的方法:
var child_child_element:DisplayObjectContainer =
DisplayObjectContainer(
child_element.getChildByName("child_child_element")
);
var child_child_child_element:DisplayObjectContainer =
DisplayObjectContainer(
child_child_element.getChildByName("child_child_child_element")
);
有没有一种方法可以使用点语法这样做:
child_element.child_child_element.child_child_child_element...
据我所知不是这样 可能有一个解决办法 如果您从Flash IDE创建了这些子级,您应该能够通过以下引用直接访问它们:
MovieClip(this.object).child1.child2.child3.child4;
child["child_child_name"] = child_child;
或者,如果您在swf内手动执行MovieClip初始化(新操作符),也可以像下面这样手动创建这些引用:
MovieClip(this.object).child1.child2.child3.child4;
child["child_child_name"] = child_child;
虽然这对movieclips来说并不重要,因为它们是动态的,所以您可以:
child.child_child_name = child_child;
最后两个在里面。当然是swf代码 如果主文档类声明实例(即“自动声明阶段实例”处于禁用状态),则只需将swf强制转换为文档类 所以
您可能应该考虑在主文档类上公开一个接口,这样其他类就不需要知道它特别是YouSWF。
注意,你正在设置一个受伤害的世界,使用一个静态类,其中类与它耦合,以提供它们自己的依赖关系。请至少考虑迁移到抽象工厂模式中(请考虑迁移到抽象工厂模式)。http://www.as3dp.com/2009/01/25/actionscript-30-abstract-factory-design-pattern-multiple-products-and-factories/)
我想我刚刚意识到,以SWC的形式导入然后以这种方式提取资产会更容易。嗯,我以前尝试过这三种方法,它们都会导致错误#1009。请记住,这是在Flash Builder中,所以我嵌入了.swf。好的,您的解决方案是正确的,我只需要将我的资产添加为swf并导出到动作脚本所有的子元素。一旦我这样做了,它的工作就像你上面。谢谢。