Actionscript 3 addEventListener反复添加

Actionscript 3 addEventListener反复添加,actionscript-3,event-handling,gallery,Actionscript 3,Event Handling,Gallery,我的图片库有8帧。在第一帧的AS3层上有几行AS3: stop(); var picsArrayYouthVillage:Array = new Array(pic1,pic2,pic3,pic4,pic5,pic6,pic7,pic8); for each (var pic in picsArrayYouthVillage) { pic.buttonMode = true; } for(var i = 0; i<8; i++) { trace("hi"); picsArrayY

我的图片库有8帧。在第一帧的AS3层上有几行AS3:

stop();

var picsArrayYouthVillage:Array = new Array(pic1,pic2,pic3,pic4,pic5,pic6,pic7,pic8);
for each (var pic in picsArrayYouthVillage)
{
pic.buttonMode = true;
}



for(var i = 0; i<8; i++)
{

trace("hi");
picsArrayYouthVillage[i].addEventListener(MouseEvent.CLICK, jumpToFrame);

}

function jumpToFrame(m:MouseEvent):void{
gotoAndStop(m.target.name + "_frame");

}
stop();
var picsArrayYouthVillage:Array=新阵列(pic1、pic2、pic3、pic4、pic5、pic6、pic7、pic8);
每个(picsArrayYouthVillage中的var pic)
{
pic.buttonMode=true;
}

对于(var i=0;i,在向对象添加事件侦听器之前,可以检查对象是否具有事件侦听器

for(var i = 0; i<8; i++) {

  if (!picsArrayYouthVillage[i].hasEventListener(MouseEvent.CLICK)) {
       trace("hi");
       picsArrayYouthVillage[i].addEventListener(MouseEvent.CLICK, jumpToFrame);
  }

}


记住在if条件下跟踪hi。如果它起作用,它应该是八个hi,并且只有一次。

我尝试了这个,但它仍然添加了那些evtListeners。当我转到第1帧时,它会跟踪输出窗口中额外的8个“hi”。
var picsArrayYouthVillage:Array = new Array(pic1,pic2,pic3,pic4,pic5,pic6,pic7,pic8);
var picsArrayYouthVillage:Array;

if (picsArrayYouthVillage == null) {
     picsArrayYouthVillage = new Array(pic1,pic2,pic3,pic4,pic5,pic6,pic7,pic8);
}