removeChild, чтобы я мог загрузить новый FLV_Player - PullRequest
0 голосов
/ 27 октября 2011

Я делаю flv-плеер с плейлистом, в котором есть раздел на английском и испанском языках. Английский является разделом по умолчанию, и он работает очень хорошо, но когда я нажимаю кнопку «Испанский», я пытаюсь удалить все дочерние элементы, которые были добавлены во время запуска, и запустить две новые функции, которые загружают мои испанские данные.

Единственное, что removeChild не работает. Я слышу, как загружается мое испанское видео, но английское по-прежнему воспроизводится в фоновом режиме.

Мне нужно полностью удалить main_container.addChild (my_player);

вот функция, которая должна делать все это:

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

Ответы [ 4 ]

1 голос
/ 09 января 2012

Извините, это немного поздно для вас, но это будет полезно для будущих читателей. Эта проблема была проклятием многих моих проектов. Вот решение:

my_container.removeChild(my_flvplayer_instance);

my_flvplayer_instance.getVideoPlayer(0).close();

my_flvplayer_instance=null;

ключ getVideoPlayer(0).close();, закрывающий поток, скрытый в компоненте FLVPlayback.

1 голос
/ 27 октября 2011

Убедитесь, что вы остановили плеер:

my_player.stop();

Если вы хотите удалить всех дочерних элементов из main_container, вы можете:

while(main_container.numChildren > 0)
{
    main_container.removeChildAt(0);
}
0 голосов
/ 27 октября 2011

Удаление экранного объекта (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");
}
0 голосов
/ 27 октября 2011

Если вы используете net stream, вам нужно закрыть соединение с потоком, как вы реализуете этот проигрыватель?

...