这是我第一次在这里发表问题。Flash AS3按钮eventlistener阵列bug
我有一个时间轴上的12个按钮的数组,当第一次访问时间线的那一部分时,使用for循环获取CLICK eventlistener添加到它们。他们所有人都在这一点上完美地工作。
当您单击它时,它会在特定的movieClip中播放帧标签,并使用关闭按钮显示相应人物上的生物,然后再次使用for循环删除每个按钮的CLICK eventlisteners。关闭按钮播放关闭动画,然后时间线返回到第一帧(其上有12个按钮),CLICK事件监听器被重新添加,但现在只有阵列的前9个按钮可以工作。没有输出错误,重新添加eventlisteners的代码与第一次运行完全一样。我完全无所适从,想知道是否有其他人遇到了这个问题。
我所有的按钮命名都是正确的,绝对没有输出错误(我已经使用了调试模块),并且确保在点击关闭按钮的时候,带有按钮的数组正在输出全部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);
}
预先感谢任何帮助和洞察力,您可以提供...我有一个轻微的感觉,它的东西,可能是显而易见的另一套的眼睛...哈哈。
对于最后三个,在调试的痕迹中看到了什么? – phwd 2010-06-11 19:56:43
你要导出什么Flash版本?如果你正在访问一个框架上的东西,你只是gotoAndStop-ed ..它可能无法访问..应该做一个运行时异常虽然..如果你只是在数组中存储字符串..尝试跟踪对象..如果他们中的一些是不是null(再次..它应该给出一个运行时异常,如果他们是......但没有其他事情在我心中) – Antriel 2010-06-11 20:14:18