这是我第一次在这里发帖提问。
我在时间轴上有一个包含12个按钮的数组,当第一次访问时间轴的那一部分时,使用for循环添加一个CLICK eventlistener。所有这些都在这一点上完美运作。
当您单击一个时,它会在特定的movieClip中播放一个帧标签,并使用关闭按钮在相应的人物上显示一个生物,然后再次使用for循环删除每个按钮的CLICK事件监视器。关闭按钮播放关闭动画,然后时间线返回到第一帧(其上有12个按钮的那个)并重新添加CLICK事件监视器,但现在只有阵列的前9个按钮工作。没有输出错误,重新添加eventlisteners的代码与第一次有效时完全相同。我完全不知所措,我想知道是否有其他人遇到过这个问题。
我的所有按钮都被正确命名,绝对没有输出错误(我已经使用过调试模块)而且我确保带有按钮的数组在点击关闭按钮时输出全部12个添加eventlisteners。
for (var q = 0; q < ackBoDBtnArray.length; q++){
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[q]].addEventListener(MouseEvent.CLICK, showBio);
}
private function showBio(eo:MouseEvent):void {
trace("show the bio");
bodVar = ackBoDBtnArray.getIndex(eo.target.name);
contentArea_mc.acknowledgements_mc.BoD_mc.gotoAndPlay(ackBoDPgArray[bodVar]);
contentArea_mc.acknowledgements_mc.BoD_mc.closeBio_btn.addEventListener(MouseEvent.CLICK, hideBio);
for (var r = 0; r < ackBoDBtnArray.length; r++){
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[r]].mouseEnabled = false;
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[r]].removeEventListener(MouseEvent.CLICK, showBio);
}
}
private function hideBio(eo:MouseEvent):void {
trace("hide it!");
contentArea_mc.acknowledgements_mc.BoD_mc.closeBio_btn.removeEventListener(MouseEvent.CLICK, hideBio);
contentArea_mc.acknowledgements_mc.BoD_mc.gotoAndPlay(ackBoDClosePgArray[bodVar]);
for (var s = 0; s < ackBoDBtnArray.length; s++){
trace(ackBoDBtnArray[s]);
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[s]].mouseEnabled = true;
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[s]].addEventListener(MouseEvent.CLICK, showBio);
}
提前感谢您提供的任何帮助和见解......我有一种轻微的感觉,这种感觉对于另一组眼睛来说可能是显而易见的......哈哈。
答案 0 :(得分:0)
对我来说可疑的是你在hideBio()的开头从closeBio_btn中删除了事件监听器。尝试在for循环后放置该行。
我无法证明这种预感是正确的,但是我想到了几个疯狂的理论:
这是一个有趣的问题,我希望你找到一个解决方案:)
答案 1 :(得分:0)
似乎解决了这个问题我必须动态添加每个btn,而不是仅仅在时间轴上添加它们。但仍然很奇怪,谢谢大家