2011-10-26 9 views
0

私はflvプレーヤーに英語とスペイン語のセクションを持つプレイリストを作成しています。英語はデフォルトのセクションですが、うまくいきますが、「スペイン語」ボタンをクリックすると、開始時に追加されたすべての子を削除し、スペイン語のデータを読み込む2つの新しい関数を実行しようとしています。removeChildので新しいFLV_Playerを読み込むことができます

唯一の問題は、removeChildが機能していないことです。私は私のスペイン語のビデオの負荷を聞くことができますが、英語のものはまだバックグラウンドで再生されています。私は完全にここにmain_container.addChild (my_player);

を削除する必要が

はそれをすべて行う必要がある機能です:削除したい場合は

my_player.stop(); 

function playSpanish (evt:MouseEvent){ 
    main_container.removeChild(my_player); 
    gotoAndStop(2); 
    trace("IN SPANISH"); 
} 

答えて

1

は、あなたのプレーヤーを停止していることを確認しますmain_containerのすべての子どもたち:

while(main_container.numChildren > 0) 
{ 
    main_container.removeChildAt(0); 
} 
+0

英語のビデオは引き続き再生されますが、私はスペイン語の開始も聞くことができます。それがなぜ削除されていないのか分かりません。 – Denoteone

+0

適切なライフサイクルを確保する: "my_player"インスタンスは、まずstop()、子を削除し、子を追加し、次の言語の設定を適用する必要があります。 –

0

ネットストリームを使用している場合は、ストリームへの接続を閉じる必要があります。どのようにこのプレーヤーを実装していますか?

0

ステージから表示オブジェクト(my_player)を削除しても、その機能は機能しなくなりません。表示されません。
ガベージコレクションが失敗し、メモリリークが発生する理由はこのためです。
あなたは次のことをする必要があります。

function playSpanish (evt:MouseEvent){ 
    // make sure you call stop on the video to you know it is not playing 
    my_player.stop() 

    // remove it from the container/stage 
    main_container.removeChild(my_player); 

    // remove all event listeners 
    my_player.removeEventlistener(EVENT, funcName); 

    // null the object out to help promote garbage collection 
    my_player = null; 


    // do your other code here 
    gotoAndStop(2); 
    trace("IN SPANISH"); 
} 
1

申し訳ありませんが、これはあなたに近づくには少し遅れますが、今後の読者には役立ちます。この問題は私のプロジェクトの多くの悩みになっています。

my_container.removeChild(my_flvplayer_instance); 

my_flvplayer_instance.getVideoPlayer(0).close(); 

my_flvplayer_instance=null; 

キーがFLVPlaybackコンポーネント内に隠されたNetStreamを閉じgetVideoPlayer(0).close();である:ここでのソリューションです。

関連する問題