actionscript-3 - 提供的 DisplayObject 必须是调用者的子对象

标签 actionscript-3 object movieclip addchild removechild

我是新手,我已经搜索并尝试了数周,但我无法掌握它。下面的简单代码给出了“提供的 DisplayObject 必须是调用者的子项”错误。

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

function removeSquare(evt:Event):void {
    removeChild(square)
}

squareObj 是库中为 AS 导出的动画片段。如何更改此代码以使其正常工作? 我想这是我缺乏正确的 oop 知识,所以任何关于这个问题的好教程的链接都值得赞赏。

问候H

最佳答案

问题是enter frame listener会被一遍又一遍的调用。第一次调用 DisplayObject 时确实是调用者的子对象,但之后就不会了(因为它已被删除)。

所以我建议你这样做:

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

function removeSquare(evt:Event):void {
    if (contains(square)) {
        removeChild(square)
    }
}

要么检查正方形是否确实是 this 的 child

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

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

或删除事件监听器,具体取决于除删除正方形之外您是否需要该事件。您还应该注意,您可能根本看不到正方形,因为它在添加后很快就会被删除。

关于actionscript-3 - 提供的 DisplayObject 必须是调用者的子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806549/

相关文章:

flash - 如何在运行某些代码之前等待 flash (as2) 加载子元素?

actionscript-3 - AS3 MovieClip getRealBounds

javascript - Action Script 3. 如何从Flash中的Movie Clip访问按钮?

c# - 从 Action Script 到 C# 的 Rijndael 加密

javascript选择更改的对象键

actionscript-3 - 如何在 Windows 10 中安装 Flash 调试版本

javascript - 如何不通过整个响应映射对象

javascript - 如何从对象中显式释放 JavaScript 对象?

flash - Flash 中的布局管理器?

actionscript-3 - as3中的动画 "blob"