在SWFLoader加载swf文件时等待

时间:2009-03-18 16:44:59

标签: flex flash swfloader

目前我正在开发一种大量使用外部SWF的应用程序(Flex)。 我想创建一个静态方法,它将文件名作为参数并返回包含在其他类中的SWF。

public static function getSWFWrapperFromFile(path:string):SWFWrapper {
   var loader:SWFLoader = new SWFLoader();
   loader.addListener(Event.COMPLETE, onLoad);
   loader.load(path);
   // If I create new SWFWrapper object here and try to assign it the loader.content  I get null reference

  }

然而,使用这种方法我无法将逻辑封装在一个函数中,因为非阻塞load()和onLoad处理程序的需要。调用加载方法后是否有可能强制延迟?或者mayber还有另一种更好的方法吗?

谢谢你, 阿隆

4 个答案:

答案 0 :(得分:1)

显示列表专为异步加载而设计。您会注意到Loader是一个DisplayObject派生类,因此可以直接放在显示列表中。加载内容后,它将成为Loader的子项。因此,如果SWFWrapper是DisplayObject派生的,您只需在代码末尾执行以下操作:


var wrapper:SWFWrapper = new SWFWrapper();
wrapper.addChild(loader);
return wrapper;

答案 1 :(得分:0)

您需要等到Loader对象完成。尝试添加事件处理程序。是的,在你有多个装载机并且必须等到最后一个装载完成之后,整个事情变得模糊。但是如果你打算使用SWFLoader就是这样。

答案 2 :(得分:0)

在flash中你无法阻止方法 - 你总是必须使用onLoad处理程序来加载数据。 (as3执行模型是单线程的,如果你在方法中阻塞,程序的其余部分将不会被执行)

答案 3 :(得分:0)

像其他人说的那样,你不能这样做。但是,看看BulkLoader AS3库,它可以同时承担管理多个装载机并等待完成的负担。它有详细记录,只需几行即可使用。