Re: [問題] FlashCS3 的 Action Script3.0 的問題
不知道要貼哪邊的code的話,就貼原始檔吧 :)
這種 "每個物件都要有不同的動作,而且沒有規則性" 的狀況
感覺可以用Dictionary來做
這樣的話只要單一listener就可以解決你的問題
而不用寫很多頁零零散散的code
我先假設你的其他按鈕條件是
按A以後 B C D E 都失效
按B以後 C D E 都失效
...以此類推
寫code最好以簡單管理為前提
還有要避免code的重複和以方便管理為目標
假設你的場景上面已經有 A B C D E 和 A1~A3 B1~B3.... 這些按鈕了
那麼大致code應該會長這樣(未經測試,可能有錯字)
//按鈕名稱存成一個Array
var allButtons: Array = [A, B, C, D, E];
var showTargets: Dictionary = new Dictionary();
var disableTargets: Dictionary = new Dictionary();
//設定每個按鈕對應到的小按鈕群
showTargets[A] = [A1, A2, A3];
showTargets[B] = [B1, B2, B3];
showTargets[C] = [C1, C2, C3];
showTargets[D] = [D1, D2, D3];
showTargets[E] = [E1, E2, E3];
//設定每個按鈕按下之後,失效的按鈕
disableTargets[A] = [B, C, D, E];
disableTargets[B] = [ C, D, E];
disableTargets[C] = [ D, E];
disableTargets[D] = [ E];
disableTargets[E] = [ ]; //空的:p
//以上資料設定完畢之後,需要的listener只需要以下一個
//loop過所有的大按鈕(A~E)
for (var j:int; j < allNames.length; j++) {
//隱藏小按鈕
for each (bar i:* in showTargets[allButtons[j]]) {
i.visible = false;
}
//監聽滑鼠按下
allButtons[j].addEventListener(MouseEvent.CLICK, listener);
}
//所有按鈕統一使用的listener
function listener(e:MouseEvent):void {
//顯示小按鈕 (XX1~XX3)
for each (var i:* in showTargets[e.target]) {
i.visible = true;
}
//讓某些按鈕失效
for each (var j:* in disableTargets[e.target]) {
j.removeEventListener(MouseEvent.CLICK, listener);
}
}
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Blog http://cjcat.blogspot.com
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.216.58.206
※ 編輯: cjcat2266 來自: 61.216.58.206 (05/03 13:15)
討論串 (同標題文章)