0

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));
    }

作成する必要がある場合は、常にコールバックを使用するため、コーディングが複雑になります。コールバックを使用せずにインスタンスを取得する方法はありますか?

4

1 に答える 1

1

SWF バイトまたは URL からのロードは常に async ですが、一度ロードして毎回複製できます。

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