0

您好,我在演示文稿中遇到了问题框架正确,但问题是当我尝试前进时,它只是不动,就像它被卡住了一样。这是我拥有的代码:

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

我在这里阅读了一些答案,但我无法弄清楚。我真的不知道会发生什么。谢谢你。

4

1 回答 1

1

该错误准确地告诉您问题出在哪里:要调用removeChild(),被删除的子对象实际上必须是对象的子对象。如果不是,则会出现错误。

快速浏览一下您的代码让我相信问题出在此处:

stage.removeChild(video10);

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

因此,您可以使用此修复程序。现在,您不应该一概而论地使用它来消除运行时错误。我想强调这一点。这是一个适合这种情况的简单检查,但在大多数情况下,您应该找到问题的根源并修复它。

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

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

于 2013-08-08T19:47:26.353 回答