1

私はLoader::load() swfsをメインswfにロードするために正常に使用していて、それからそれらをSpriteの子として追加します。他のイベントが発生した場合は、必要に応じてswfsを削除したいと思います。私は見たが成功 unload()しなかった。removeChildAt()

addChild()ロードされたインスタンスをピン留めして削除できるようにするための呼び出しを追加しただけです。読み込みは、addChild();

また、プレーヤーv.10に公開してmyLoader.unloadAndStop()、;を使用してみました。しかし、これも効果はありません。

次のデモコードは私の問題を示しています。1人の子供が追加され、もう1人が削除されましたが、intro.swfはまだ遊んでいます。

import flash.display.Loader; 
import flash.display.Sprite;
import flash.display.LoaderInfo;
import flash.net.URLRequest;

var myLoader:Loader = new Loader();
var holderMC:Sprite = new Sprite();
var myRequest:URLRequest = new URLRequest('intro.swf');

myLoader.load(myRequest);
holderMC.addChild(myLoader);
trace("initial:"+holderMC.numChildren);  // traces initial:1

while(holderMC.numChildren > 0) {
 holderMC.removeChildAt(0);
 trace("now there are:"+holderMC.numChildren); // traces now there are :0
}
myLoader.unload();

//編集-また試しました:

myLoader.unloadAndStop();
myLoader = null;

何かご意見は?

4

1 に答える 1

3

ここで何か他のことが起こっていることは間違いありません。まず、「intro.swf」をどう見ていますか?holderMCを作成し、読み込んだswfを子として追加していますが、いつholderMCを表示リストに追加しますか?

ビューからムービーを削除する適切な方法は次のとおりです。

holderMC.removeChild(myLoader);

holderMC のコンテンツにガベージ コレクションのフラグを立てるには、null に設定する必要があります。そう、

holderMC.removeChild(myLoader);
myLoader.unload(); // this will set the content (the movie itself) to null.
myLoader = null; // npw the loader can be garbage collected too

removeChild を実行していて、まだ表示されている場合は、問題が実際にどこにあるかを示すために、さらにコードを投稿する必要があります。

于 2010-01-23T23:31:46.427 に答える