我的照片库有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帧时,都会再次添加事件侦听器。
有什么想法吗?提前谢谢大家。
答案 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。如果它有效,它应该是八喜,只有一次。