目前我正在开发一种大量使用外部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还有另一种更好的方法吗?
谢谢你, 阿隆
答案 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)