0

英語とスペイン語のセクションがあるプレイリストで flv プレーヤーを作成しています。英語はデフォルトのセクションであり、非常にうまく機能しますが、「スペイン語」ボタンをクリックすると、開始時に追加されたすべての子を削除し、スペイン語のデータをロードする 2 つの新しい関数を実行しようとしています。

唯一のことは、 removeChild が機能していないことです。スペイン語の動画の読み込みは聞こえますが、英語の動画はまだバックグラウンドで再生されています。

完全に取り除く必要がありますmain_container.addChild (my_player);

すべてを実行する関数は次のとおりです。

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

4 に答える 4

1

ご連絡が遅くなり申し訳ありませんが、今後の読者の参考になれば幸いです。この問題は、私の多くのプロジェクトの悩みの種でした。解決策は次のとおりです。

my_container.removeChild(my_flvplayer_instance);

my_flvplayer_instance.getVideoPlayer(0).close();

my_flvplayer_instance=null;

重要なのはgetVideoPlayer(0).close();、FLVPlayback コンポーネント内に隠されているネットストリームを閉じることです。

于 2012-01-08T22:29:36.240 に答える
1

プレーヤーを停止したことを確認します。

my_player.stop();

すべての子を main_container から削除する場合は、次のようにします。

while(main_container.numChildren > 0)
{
    main_container.removeChildAt(0);
}
于 2011-10-26T20:30:27.123 に答える
0

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

于 2011-10-26T20:46:28.070 に答える
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");
}
于 2011-10-26T21:06:38.097 に答える