我有一段代码将相同MovieClip的三个insance添加到舞台上。我还添加了 MouseEvent.CLICK 监听器。一旦点击任何MovieClip,我希望它从舞台上删除。我的问题是,无论什么元素被点击,只有最后一个被删除,当我再次点击另一个实例时,我得到:
ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子级。
我将这三个MovieClip添加到一个数组中,但我不知道如何正确识别被点击的实例并仅删除所述实例。
这是我所拥有的代码的摘录:
var myMC: SomeMC;
var myArray: Array = [];
function Loaded(e: Event): void {
for (var i: int = 0; i < 3; i++) {
myMC = new SomeMC();
myMC.addEventListener(MouseEvent.CLICK, Clicked);
myMC.y = 50;
myMC.x = 50 * i;
addChild(myMC);
myArray.push(myMC);
}
}
function imageClicked(e: MouseEvent){
// Only the last instance gets removed.
e.currentTarget.parent.removeChild(myMC);
}
我会感激任何帮助。
答案 0 :(得分:2)
在Loaded
函数中,您可以创建对象的3个实例,但这样做:
myMC = new SomeMC();
你覆盖参考。在第一次迭代中,myMC
是第一次,第二次第二次,等等......
然后在imageClicked
你试图删除它。第一次它正在工作,因为它引用了最后一个对象,但是在你从舞台上删除它之后它将不再起作用。
如何将e.currentTarget.parent.removeChild(myMC);
更改为e.currentTarget.parent.removeChild(e.currentTarget);
?这应该删除点击的。