我想将swf数据保存在本地,这样我就可以反复重新创建它。尽管大多数Web浏览器都有缓存机制,但一旦下载了资源,应用程序就可以从本地获取资源。但是浏览器仍然需要检查远程服务器的文件的时间戳,以确保远程文件没有更新。这会使进程延迟。
我想自己处理它,所以我将下载的数据保存在应用程序中。问题是我没有找到立即重新创建加载的swf的新实例的方法。例如,如果我下载一个jpeg文件,我终于得到了一个bitmapdata,所以我保留了bitmapdata,如果我需要一个副本,我只需使用clone()。但是swf不同,我不知道如何克隆swf实例。
我的方式是加载swf作为二进制数组,并通过Loader.loadBytes加载它,这是我的代码。
public static function loadSWFByte(data:ByteArray,callback:Function,domain:ApplicationDomain):void{
var loader:Loader = new Loader();
var f:Function = function(e:Event):void{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,f);
if(callback!=null){
callback(loader.content,loader.contentLoaderInfo);
}
}
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,f);
loader.loadBytes(data,new LoaderContext(false,domain));
}
如果我需要创建它,我总是使用回调,从而使编码变得复杂。有没有办法可以在不使用回调的情况下获取实例?
答案 0 :(得分:1)
加载SWF字节或从URL始终是异步的,但您可以加载一次并每次克隆:
// when loader load is complete
var cl:Class = loader.content["constructor"];
var clone:* = new cl();