Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 提供的DisplayObject必须是调用方的子对象_Actionscript 3_Object_Movieclip_Addchild_Removechild - Fatal编程技术网

Actionscript 3 提供的DisplayObject必须是调用方的子对象

Actionscript 3 提供的DisplayObject必须是调用方的子对象,actionscript-3,object,movieclip,addchild,removechild,Actionscript 3,Object,Movieclip,Addchild,Removechild,我是一个新手,我已经在这方面努力了好几个星期,但我无法掌握这一点。下面的简单代码给出了“提供的DisplayObject必须是调用方的子对象”错误 squareObj是库中的一个movieclip,导出为AS。如何修改此代码以使其正常工作? 我想这是我在正确的面向对象编程方面的知识所缺乏的,所以任何关于这个问题的好教程的链接都是非常感谢的 关于H问题是enter frame侦听器将被反复调用。第一次调用它时,DisplayObject确实是调用者的子对象,但之后它就不会了(因为它已经被删除了)

我是一个新手,我已经在这方面努力了好几个星期,但我无法掌握这一点。下面的简单代码给出了“提供的DisplayObject必须是调用方的子对象”错误

squareObj是库中的一个movieclip,导出为AS。如何修改此代码以使其正常工作? 我想这是我在正确的面向对象编程方面的知识所缺乏的,所以任何关于这个问题的好教程的链接都是非常感谢的


关于H

问题是enter frame侦听器将被反复调用。第一次调用它时,DisplayObject确实是调用者的子对象,但之后它就不会了(因为它已经被删除了)

因此,我建议你:

var square = new squareObj;
addChild(square);
addEventListener(Event.ENTER_FRAME, removeSquare);

function removeSquare(evt:Event):void {
    if (contains(square)) {
        removeChild(square)
    }
}
检查正方形是否确实是此

var square = new squareObj;
addChild(square);
addEventListener(Event.ENTER_FRAME, removeSquare);

function removeSquare(evt:Event):void {
    removeEventListener(Event.ENTER_FRAME, removeSquare)
    removeChild(square)
}
或者删除事件侦听器,这取决于您是否需要该事件来执行除删除方块以外的其他操作。此外,您还应该注意,您可能根本看不到正方形,因为它在添加后会很快被删除

var square = new squareObj;
addChild(square);
addEventListener(Event.ENTER_FRAME, removeSquare);

function removeSquare(evt:Event):void {
    removeEventListener(Event.ENTER_FRAME, removeSquare)
    removeChild(square)
}