Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash AS3嵌入访问子movieclips_Flash_Apache Flex_Actionscript 3 - Fatal编程技术网

Flash AS3嵌入访问子movieclips

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

所以我用这段代码来嵌入我的.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.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并导出到动作脚本所有的子元素。一旦我这样做了,它的工作就像你上面。谢谢。