3

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

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

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

squareObj 是库中为 AS 导出的影片剪辑。如何更改此代码以使其正常工作?我想这是我所缺乏的正确 oop 方面的知识,因此感谢任何指向有关此事的优秀教程的链接。

问候 H

4

1 回答 1

6

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

所以我建议你这样做:

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

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

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

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

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

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

于 2010-05-10T21:39:43.580 回答