0

これは、ビデオ クラスを使用して特定のビデオを 0.0 で MovieClip コンテナーにロードする関数です。

public var mainVideo:SimpleVideo;

public function loadVideo(videoString:String) :void{
    mainVideo = new
    SimpleVideo("videos/"+videoString+".flv","",true,video_container.positionMc);
    video_container.addEventListener(MouseEvent.MOUSE_DOWN,controlVideoPlayer);
    addChild(mainVideo);
    trace('adding new video to container');
}

ビデオがロードされるたびに、別のビデオがロードされているかどうかを確認したいと思います。ある場合は、それを削除して、新しいビデオを追加します。

removeChild()色々と使ってみましたが、どうもうまくいきません。

私は使用しremoveChild(mainVideo)ますか?video_container.removeChild(mainVideo)? そして、既存の が既に存在するかどうかを確認するにはどうすればよいでしょうmainVideoか?

どんな助けでも大歓迎です!

-更新-試して使用するremoveChild(mainVideo)と、次のエラーが発生します。

TypeError: エラー #2007: パラメータの子は非 null でなければなりません。
flash.display::DisplayObjectContainer/removeChild()
で Main/removeVideo() で MethodInfo-127()

4

2 に答える 2

0

ビデオをステージではなくコンテナー ムービークリップに追加し、そのコンテナーの表示リストに一度に 1 つの SimpleVideo のインスタンスしかない場合は、次のようにすることができます。

if( myVideoContainer.numChildren > 0 )
{
    myVideoContainer.removeChild( myVideoContainer.getChildAt( 0 ) );
}

ただし、より大きな問題は、使用している SimpleVideo クラスがそれ自体をクリーンアップする方法です。ほとんどのビデオ クラスには、リスナーを削除して netStream をクリーンアップする cleanup または kill 関数があります。コンテナからビデオインスタンスを削除するだけでなく、そのようなものを呼び出す必要があると思います。

于 2013-08-07T23:15:43.220 に答える