0

我想将 swf 数据保存在本地,这样我就可以一次又一次地重新创建它。虽然大多数 Web 浏览器都有缓存机制,但一旦下载了资源,应用程序就可以从本地获取资源。但是浏览器仍然需要检查远程服务器文件的时间戳,以确保远程文件没有更新。这会导致进程延迟。

我想自己处理,所以我将下载的数据保存在应用程序中。问题是我没有找到一种方法来立即重新创建加载的 swf 的新实例。例如,如果我下载 jpeg 文件,我终于得到了一个位图数据,所以我保留了位图数据,如果我需要一个副本,我只需使用 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));
    }

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

4

1 回答 1

1

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

// when loader load is complete
var cl:Class = loader.content["constructor"];
var clone:* = new cl();
于 2012-10-19T05:51:41.377 回答