错误#2025:displayObject必须是来自调用者的子对象

时间:2013-08-08 19:13:58

标签: actionscript-3 removeclass removechild

你好,我在一个框架上有一些视频的演示文稿时遇到了麻烦,我已经制作了一些按钮来观看每个视频,当我移动到下一帧时,没关系,视频已“消失”,我可以阅读关于那个框架的信息正确,但问题是当我试图前进时,它只是不移动,就像它被卡住或什么的。 这是我的代码:

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);
    }
}

我在这里读了一些答案,但我无法弄明白。 我真的不知道它会发生什么。 谢谢。

1 个答案:

答案 0 :(得分:1)

错误告诉您问题究竟是什么:要调用removeChild(),被删除的子项实际上必须是该对象的子级。如果不是,则会出错。

快速浏览一下代码会让我相信问题就在这里:

stage.removeChild(video10);

因为每按一次键39就会发生这种情况,因此它有可能被删除两次。在大多数情况下,您应该弄清楚如何修复错误,但在这种情况下,如果不完全删除逻辑,就无法修复它。

所以你可以使用这个修复程序。现在,您不应该一起使用它来摆脱运行时错误。我想强调一下。这是一个适用于此实例的简单检查,但在大多数情况下,您应该找到问题的根源并进行修复。

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

这会在删除之前验证video10实际上是stage的孩子。同样,这不是通用解决方案,只应在根本问题是必要逻辑的特定情况下使用。