如何从本地数据立即加载swf

时间:2012-10-19 04:39:14

标签: actionscript-3 flash

我想将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));
    }

如果我需要创建它,我总是使用回调,从而使编码变得复杂。有没有办法可以在不使用回调的情况下获取实例?

1 个答案:

答案 0 :(得分:1)

加载SWF字节或从URL始终是异步的,但您可以加载一次并每次克隆:

// when loader load is complete
var cl:Class = loader.content["constructor"];
var clone:* = new cl();