0

多くのビデオクリップを使用する必要があるプレゼンテーションを行っています。Loader を使用して、これらすべての動画を動的に読み込みます。次のようなコード スニペットを使用します。

var req:URLRequest = new URLRequest("video.swf");
var a:Loader = new Loader();
a.load(req);
stage.addChild(a);

a 問題は次のとおりです。理由はわかりませんが、すべてメモリにロードされているためだと思います。ビデオを表示した後、ビデオをメモリから消去する方法はありますか? または、これに対する別の解決策はありますか?

4

2 に答える 2

1

毎回新しいビデオを読み込んでステージに追加すると、かなり大きな階層のムービーが重なり合った状態になります。すべてが舞台と記憶にとどめられました。

以前にロードしたムービーへの参照を保持している場合は、「次の」ムービーがロードされたときにステージから削除できます。これを適切にテストしていませんが、コードがどのように見えるかを理解するためだけに:

var oldLoader:Loader = null;

var a:Loader = new Loader();
a.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
a.load(<your url>);

function loader_complete(e:Event):void {
    var newLoader:Loader = e.currentTarget.loader as Loader;

    stage.addChild(newLoader);

    if(oldLoader != null) {
        stage.removeChild(oldLoader);
        oldLoader = null;
    }

   oldLoader = newLoader;
}
于 2011-07-08T12:34:24.527 に答える
0

私は解決策を見つけたと思います。removeChild を使用すると、表示が停止するだけで、すべてがメモリ (キャッシュ) に残ります。そのため、ビデオをロードすればするほど、キャッシュがいっぱいになります。必要なのは、別のビデオをロードする前にキャッシュを完全にクリアするものです。

私は unloadAndStop() を使用しましたが、誰かがそれに反対しない限り、完全にトリックを行ったようです。

再度、感謝します

于 2011-07-08T23:08:49.633 に答える