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