推 gamecubemomo:推亂插新變數XD這招真的很好用,不過還是建議2啦 02/17 00:26
看完這個問題我短時間以內能想到的解決方法有兩個
如果有人有其他的方法也請分醒一下囉 :)
(1)利用dynamic class的特性
MovieClip, Sprite等class都是dynamic class
這個特性是從早期的Flash沿用過來的
存在目的是為了不想寫複雜城市的美術人員著想
每一個dynamic class的物件都可以自由在身上"亂插"新變數
所以你可以這樣寫
var BTNS:Array = [B01_btn,B02_btn,B03_btn];
for (var i:uint=0; i<BTNS.length; i++) {
BTNS[i].addEventListener(MouseEvent.CLICK, Link);
//插新變數
BTNS[i].data = i;
}
function Link(e:MouseEvent) {
var _mc:SimpleButton =e.currentTarget as SimpleButton;
//存取新插的變數
trace(MovieClip(e.current).data);
}
(2)利用AS3新的Dictionary class
Dictionary class相當於C++ STL裡面的map<T1, T2> class
也相當於C#裡面的Dictionary<T1, T2> class
能夠讓一個物件的值對應到另外一個物件的值
只是AS3的Dictionary比較彈性,不用限定T1和T2是什麼class
所以可以這樣寫
import flash.utils.Dictionary;
var BTNS:Array = [B01_btn,B02_btn,B03_btn];
//對應序號用的Dictionary物件
var dic:Dictionary = new Dictionary();
for (var i:uint=0; i<BTNS.length; i++) {
BTNS[i].addEventListener(MouseEvent.CLICK, Link);
//定義對應序號值
dic[BTNS[i]] = i;
}
function Link(e:MouseEvent) {
var _mc:SimpleButton =e.currentTarget as SimpleButton;
//存取對應的序號值
trace(dic[e.currentTarget]);
}
--
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.252
※ 編輯: cjcat2266 來自: 61.228.85.252 (02/16 20:51)