【发布时间】:2011-03-02 19:55:53
【问题描述】:
这是我第一次在这里发帖。
我在一个时间轴上有一个包含 12 个按钮的数组,当第一次访问时间轴的那个部分时,使用 for 循环将 CLICK 事件监听器添加到它们。在那一点上,它们都可以完美地工作。
当您单击一个时,它会在特定的movieClip 中播放一个帧标签,并在相应的人身上显示一个带有关闭按钮的个人简介,并删除每个按钮的CLICK 事件侦听器,再次使用for 循环。关闭按钮播放关闭动画,然后时间线回到第一帧(上面有 12 个按钮的那一帧)并重新添加 CLICK 事件侦听器,但现在只有数组的前 9 个按钮起作用。没有输出错误,重新添加事件侦听器的代码与第一次工作的代码完全相同。我完全不知所措,想知道是否有其他人遇到过这个问题。
我的所有按钮都正确命名,绝对没有输出错误(我使用了调试模块),并且我确保其中包含按钮的数组在单击关闭按钮时输出所有 12 个按钮添加事件监听器。
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);
}
提前感谢您提供的任何帮助和见解...我有一种轻微的感觉,它可能对另一双眼睛来说是显而易见的...哈哈。
【问题讨论】:
-
最后三个,在调试的trace中看到了什么?
-
您要导出的 Flash 版本是什么?如果您正在访问框架上的某些内容,您只需 gotoAndStop-ed.. 它可能无法访问.. 应该会产生运行时异常.. 如果您只将字符串存储在数组中.. 尝试跟踪对象.. 如果其中一些是不为空(再次......如果它们是......它应该给出运行时异常......但我没有想到其他任何东西)
标签: actionscript-3 arrays button for-loop event-listener