1

swfがロードされるとデフォルトでflvファイルを再生する外部swfファイルをロードしました。問題は、swf ファイルをメモリから削除する方法です。私のコード:

var myLoader:Loader = new Loader();                     
var url:URLRequest = new URLRequest("ExternalSWF.swf");  
myLoader.load(url);                                     
detailMovieClip.movieHolder.addChild(myLoader);

removeChild、unload、および unloadAndStop の多くの組み合わせを試しましたが、どれも機能しません。正しく参照しないことがすべてだと思います。

アップデート:

Jegan からの回答を使用しましたが、numChildren が 1 つしかないダミー プロジェクトでテストしている場合にのみ機能しますが、実際のコード例では numChildren が 22 を報告したため、それが問題になるかどうかはわかりません。これが実際のコードです:

var myImageLoader:Loader;
var myImageRequest:URLRequest;
var theImagePath:String;

//part from xml processor function

theImagePath = "flash/"+myXML..item_video_link[n];
loadTheMovie(theImagePath);

function loadTheMovie(theImagePath):void{

myImageLoader = new Loader();
myImageRequest= new URLRequest(theImagePath);
myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,showMeTheVideo);
myImageLoader.load(myImageRequest);

}

function showMeTheVideo(evt:Event):void{

 detailsMovieClip_mc.details_video_holder.dynamicVideoHolder.addChild(myImageLoader);

}

stopVideo(sectionname):viod{

if(detailsMovieClip_mc.details_video_holder.dynamicVideoHolder.numChildren !=0){  

trace("what is the number of children: "+numChildren);

 myImageLoader.unloadAndStop();

 detailsMovieClip_mc.details_video_holder.
 dynamicVideoHolder.removeChild(myImageLoader);


}
}
4

2 に答える 2

1
stage.addEventListener(MouseEvent.CLICK, removeSWF);
function removeSWF (e:MouseEvent):void 
{
    if(detailMovieClip.movieHolder.numChildren !=0){        
        myLoader.unloadAndStop();

        detailMovieClip.movieHolder.removeChild(myLoader);// empty the movieClip memory
    }
}

またはインスタンスに名前を付けてLoaderから、次を使用して検索しますgetChildByName

myLoader.name = "myloader";

function removeSWF (e:MouseEvent):void 
    {
        if(detailMovieClip.movieHolder.numChildren !=0){        
            Loader(detailMovieClip.movieHolder.getChildByName("myloader")).unloadAndStop();
        detailMovieClip.movieHolder.removeChild(detailMovieClip.movieHolder.getChildByName("myloader"));// empty the movieClip memory
        }
    }
于 2012-08-10T05:33:07.463 に答える
0

これは、ローダーをシーン自体に追加しているためだと思います。

この動作を維持したい場合 (この場合は簡単な修正方法があります)、removeChild() を使用して MovieClip からローダーを削除してから参照を null に設定するか、delete キーワードを使用します。

この場合は、LOADED イベントをリッスンし、loader.content に含まれる MovieClip をターゲットの MovieClip に追加します。次に、アンロードする場合は、removeChild() を使用してコンテナーからクリップを削除し、次に loader.unload() を使用します。

于 2012-08-10T14:27:06.043 に答える