2013-08-07 3 views
0

Это функция, которая загружает определенное видео в контейнер MovieClip в 0.0 с использованием класса видео.AS3 - Загрузка нескольких видео в один контейнер - addChild removeChild

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?

Любая помощь была бы принята с благодарностью!

-Update- Если я пытаюсь использовать removeChild(mainVideo) я получаю эту ошибку:

TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/removeChild()
at Main/removeVideo() at MethodInfo-127()

+0

Где вы добавляете 'removeChild (mainVideo)'? Можете ли вы обновить свой код? – putvande

ответ

0

Если добавить видео в контейнер мувика, а не на сцене, и что контейнер только имеет только один экземпляр SimpleVideo в списке отображения в то время, вы могли бы сделать:

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

больший вопрос, хотя, как класс SimpleVideo вы используете самоочищается вверх. Большинство видео-классов имеют функцию очистки или уничтожения, которая удаляет слушателей и очищает netStream. Я думаю, вам нужно будет вызвать что-то подобное, а также удалить экземпляр видео из контейнера.

0

Я надеюсь, что это respone может помочь вам

-> Буду ли я использовать removeChild(mainVideo)? video_container.removeChild(mainVideo)?

вы должны использовать removeChild функцию, но вы должны знать, кто является родителем mainVideo и вызвать эту функцию своего родителя, в вашем случае, я думаю, video_container не является родителем, потому что это переменная около mainVideo и добавить mainVideo к экземпляру класса, который имеет loadVideo функцию

иногда вы можете использовать mainVideo.parent.removeChild(mainVideo), не самый лучший подход, но это работает, это лучше знать, кто является родителем и вызвать функцию removeChild() явно на этом «родитель»

-> Могу ли я проверить, было ли уже существующее mainVideo?

хорошо, вы можете сделать простой if(mainVideo != null) { .. }, потому что в функции loadVideo создания новых экземпляров каждый раз, это означает, что если вы назвали хотя бы один раз эта функция, то if условие должно быть верно, что означает, что у вас есть уже существующий mainVideo

->TypeError: Error #2007: Parameter child must be non-null.

, что означает, что ваш mainVideo не экземпляр, потому что я думаю, вы не заехали loadVideo() еще, поэтому @putvande попросил вас предоставить больше кода, мы должны увидеть, где и когда вы звоните removeChild()

Смежные вопросы