очистить видео перед переходом к другому кадру

Здравствуйте, я делаю презентацию, на которой есть несколько видео. Для просмотра видео я сделал несколько кнопок и нашел код для вывода внешних видео на сцену. Проблема в том, что когда я перехожу к следующему кадру, последнее видео остается там. Это код, который я должен установить для видео на сцене:

miguel_btn.addEventListener(MouseEvent.CLICK,video_miguel);
function video_miguel(event:MouseEvent):void
{
var conexion10:NetConnection= new NetConnection();
conexion10.connect(null);
var display10:NetStream= new NetStream(conexion10);
display10.play("Miguel_1.flv");
var video10:Video=new Video();
video10.attachNetStream(display10);
video10.x= 150;
video10.y= 250;
stage.addChild(video10);
display10.addEventListener(AsyncErrorEvent.ASYNC_ERROR,nomostrar10);
function nomostrar10(event:AsyncErrorEvent):void
{
}
} 

и я пытался удалить их с помощью:

if (event.keyCode == Keyboard.RIGHT)
{
        nextFrame();
                video10.clear();
}

но я новичок в as3 и он не работает. Спасибо.


person Tanz    schedule 08.08.2013    source источник


Ответы (2)


Поскольку вы не опубликовали весь код, трудно определить проблему. Я считаю, что проблема заключается в том, что ваше событие клавиатуры не срабатывает. Я бы порекомендовал попробовать следующий код, чтобы увидеть, решит ли он вашу проблему.

Вместо вызова video10.clear(); я также полностью удалил объект.

import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.net.NetConnection;
import flash.media.Video;
import flash.net.NetStream;

miguel_btn.addEventListener(MouseEvent.CLICK, video_miguel);
stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);

var video10:Video;
var display10:NetStream;

function video_miguel(event:MouseEvent):void {

    display10 = new NetStream(new NetConnection());
    display10.play("Miguel_1.flv");

    video10 = new Video();
    video10.attachNetStream(display10);
    video10.x = 150;
    video10.y = 250;

    stage.addChild(video10);
}

function handleKeyDown(ke:KeyboardEvent):void {
    //keycode 39 is the right arrow key.
    if(ke.keyCode == 39) {
        nextFrame();
    //We can completely remove the video by calling the function below.
        stage.removeChild(video10);
    }
}
person Andreas    schedule 08.08.2013
comment
большое спасибо @Andreas. Вы очень помогли! Я понял, что у меня есть переменная video10 как частная, и мне также нужно было подключить сетевой поток, а затем, когда я перехожу к следующему кадру, видео больше нет, и это здорово! но теперь, когда я пытаюсь продолжить переход к следующим кадрам, он больше не перемещается. Ошибка № 2025 DisplayObject должна быть вторичным элементом от слушателя. - person Tanz; 08.08.2013

Я согласен с Андреасом и предлагаю закрыть netStream и все же очистить видео:

display10.close();
video10.clear();
stage.removeChild(video10);
person Rodislav Moldovan    schedule 08.08.2013
comment
Спасибо, Родислав, я решил проблему с помощью @Andreas: когда я перехожу к следующему кадру, он работает отлично. Дело в том, что после этого я не могу двигаться вперед, как будто он застрял. Спасибо еще раз. - person Tanz; 08.08.2013