addEventListener一次又一次地添加

时间:2013-08-25 11:20:10

标签: 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");
picsArrayYouthVillage[i].addEventListener(MouseEvent.CLICK, jumpToFrame);

}

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

}

在图片图层上有8帧包含图片和缩略图按钮(pic1,... pic8)

问题是当我使用拇指导航时,每次单击第一个按钮并跳到第1帧时,都会再次添加事件侦听器。

有什么想法吗?提前谢谢大家。

1 个答案:

答案 0 :(得分:0)

在向其添加事件侦听器之前,您可以检查对象是否具有事件侦听器

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

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

}

修改

在我尝试代码后,我发现了问题,也改变了这段代码

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);
}

请记住在if条件中追踪hi。如果它有效,它应该是八喜,只有一次。