Re: [問題] FlashCS3 的 Action Script3.0 的問題

看板Flash作者 (CJ Cat)時間17年前 (2008/05/03 13:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
不知道要貼哪邊的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)
文章代碼(AID): #186_CpWF (Flash)
文章代碼(AID): #186_CpWF (Flash)