Flash AS3:如何将事件侦听器添加到我';我在动态加载吗?
我有一个父SWF(parent),它处理多个子SWF(Child_1、Child_2、Child_3)之间的用户导航 如何将事件侦听器添加到子SWF上的导航按钮,以便用户可以在Child_1、Child_2和Child_3之间横向移动 我可以想出两种选择,但两种都不可行: 1) 父SWF在加载子SWF时设置事件侦听器。因此,我在父级上使用加载程序加载子级_1,并在父级中将eventlisteners添加到子级_1.myNavigationform.myButton 这里的问题是,父对象只处理loader实例,我想不出它将如何深入到Child_1中的各个对象 2) Child_1将事件侦听器添加到它自己的对象中。这正好相反。子_1访问自己的按钮没有问题,但当用户单击按钮时,它无法访问父级上的方法,以便加载子_2 这里的解决方案是什么?我相信这是经常做的,我只是没有看到任何东西可以解释如何处理这个问题Flash AS3:如何将事件侦听器添加到我';我在动态加载吗?,flash,actionscript-3,navigation,swfloader,Flash,Actionscript 3,Navigation,Swfloader,我有一个父SWF(parent),它处理多个子SWF(Child_1、Child_2、Child_3)之间的用户导航 如何将事件侦听器添加到子SWF上的导航按钮,以便用户可以在Child_1、Child_2和Child_3之间横向移动 我可以想出两种选择,但两种都不可行: 1) 父SWF在加载子SWF时设置事件侦听器。因此,我在父级上使用加载程序加载子级_1,并在父级中将eventlisteners添加到子级_1.myNavigationform.myButton 这里的问题是,父对象只处理lo
谢谢。他们两个都可以。但第一个更灵活,因为它提供了松散耦合的父电影和子电影。您可以通过contentloaderinfo获取子movieclip。现在您可以将其添加到父电影中并调用其函数,将侦听器添加到其组件中。
在第二种情况下,如果您想访问父电影功能,则需要将其放入子电影中。(例如parent.somefunction();)。
更好的实现方式是,每个子电影都通过调度事件(如NavigateExtent等)提供一些功能,加载程序电影可以使用这些事件,如本例中的父电影)。因此,在这种情况下,实现将是这样的
_child1loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
_child1loader.load(child1URLRequest);
function onComplete(e:Event):void {
_child1movie = MovieClip(e.target.content);
}
public class Child1 extends MovieClip {
...
private function onSomeButtonPressWhichWillAskParentToGoToNextChild():void {
dispatchEvent(new Event("navigateNext"));
}
...
}
...
public class Parent extends MovieClip{
...
_child1movie.addEventListener("navigateNext", onNavigateNext);
private function onNavigateNext(e:Event):void {
//e.target is _child1movie, so you can play with it (hide it or throw it away etc...)
//do actual naigation
}
...
}