addEventListener一次又一次添加



我的图片库有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帧时,都会再次添加事件侦听器。

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

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

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。如果它有效,它应该是八个嗨,而且只有一次。

相关内容

最新更新