我是新手,我已经搜索并尝试了数周,但我无法掌握它。下面的简单代码给出了“提供的 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/