ActionScript 3:将同一对象的多个实例添加到舞台并单独删除每个实例

时间:2017-06-07 12:00:41

标签: actionscript-3 flash removechild animate-cc

我有一段代码将相同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);
  
  }

我会感激任何帮助。

1 个答案:

答案 0 :(得分:2)

Loaded函数中,您可以创建对象的3个实例,但这样做:

myMC = new SomeMC();

你覆盖参考。在第一次迭代中,myMC是第一次,第二次第二次,等等......

然后在imageClicked你试图删除它。第一次它正在工作,因为它引用了最后一个对象,但是在你从舞台上删除它之后它将不再起作用。

如何将e.currentTarget.parent.removeChild(myMC);更改为e.currentTarget.parent.removeChild(e.currentTarget);?这应该删除点击的。