Ошибка № 2025: displayObject должен быть дочерним от вызывающего объекта.

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

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

stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown10);
function handleKeyDown10(ke:KeyboardEvent):void {
    if(ke.keyCode == 39) 
    {
    stage.removeChild(video10);
    }
}

Я прочитал некоторые ответы здесь, но я не могу понять это. Я действительно не знаю, что это может происходить. Спасибо.


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


Ответы (1)


Ошибка говорит вам, в чем именно заключается проблема: чтобы вызвать removeChild(), удаляемый дочерний элемент должен быть дочерним элементом объекта. Если это не так, вы получите ошибку.

Беглый взгляд на ваш код заставляет меня поверить, что проблема здесь:

stage.removeChild(video10);

Поскольку это происходит каждый раз при нажатии клавиши 39, она может быть удалена дважды. В большинстве случаев вы должны выяснить, как исправить ошибку, но в этом случае нет способа исправить ее, не удаляя логику полностью.

Таким образом, вы можете использовать это исправление. Теперь вы не должны использовать это, чтобы избавиться от ошибок во время выполнения. Я хочу это подчеркнуть. Это простая проверка, которая подходит в данном случае, но в большинстве случаев вы должны найти корень проблемы и устранить ее.

if ( video10.parent == stage ) {
    stage.removeChild(video10);
}

Это подтвердит, что video10 на самом деле является дочерним элементом stage перед его удалением. Опять же, это не универсальное решение, и его следует использовать только в избранных случаях, когда основная проблема требует логики.

person Josh    schedule 08.08.2013