作者cjcat2266 (CJ Cat)
看板Flash
標題Re: [問題] 請問如何用ComboBox控制內部元件?
時間Sun Apr 20 13:49:11 2008
※ 引述《kuwood (古)》之銘言:
: (我只知道function裡應該會有
: on(press){_root.mc名.gotoAndPlay("要的那格影格");}
: 其他就不會了ˊˋ)
其實也不是用on(press)喔~
component 2.0用的event model不是一般AS2的handler model
而是跟AS3一樣的listener model
listener model的特色如下:
(1)需要有一個function被定義出來,此為listener
(2)listener要去註冊成一個物件的listener
(3)一個物件發生事件以後會丟出一個event object
(4)如果這個事件有listener註冊(監聽)的話
這個event object就會被當作唯一的參數傳入listener
(所以listener定義的時候必須只有一個參數)
(5)接著這個listener就會啟動
並且可以使用傳入的event object身上帶有的事件相關資訊
AS3和component 2.0的listener機制還使有一些差異
最主要的就是,AS3的listener可以直接去註冊事件
component 2.0的話則是由一個Object物件去註冊事件
此物件稱為listener object
而listener object身上定義與事件同名的function就是監聽事件的listener
好啦,說了這麼多
最後就來看看要達到你的效果的code吧:
//新增自訂的label和其所對應的data值
box_cb.addItem({label:"frame 1", data:1});
box_cb.addItem({label:"frame 2", data:2});
box_cb.addItem({label:"frame 3", data:3});
//宣告listener object
var listenerObj:Object = new Object();
//定義listener object身上的listener
listenerObj.change = function(e:Object) {
//這邊的效果你可以自己寫
//ComboBox的event object有哪些可用的property
//請自行參考F1說明
//這邊的target.selectedItem.data
//就是目前ComboBox顯示的label對應的data值
mc.gotoAndStop(e.target.selectedItem.data);
};
//註冊listenerObject為box_cb的listener object
//"change"代表ComboBox "label改變"的事件
box_cb.addEventListener("change", listenerObj);
--
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.228.85.248
※ 編輯: cjcat2266 來自: 61.228.85.248 (04/20 13:51)
推 kuwood:原來是用listener...原本完全沒概念的說@@ 04/20 14:09
→ kuwood:謝謝大大詳細的教學 我學到了好多喔~感恩^^ 04/20 14:11
推 GODSIZE:推用Listener 04/20 21:17