這是我第一次在這裏發表問題。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