[問題] 使用迴圈加入變數

看板Flash作者 (囧RZ)時間11年前 (2012/11/18 07:52), 編輯推噓5(5015)
留言20則, 4人參與, 最新討論串1/3 (看更多)
假設現在有icon1, icon2, ...這些MC (存放在元件庫裡) 而我想為每個icon都建立一個連結 ex:icon1的連結叫Icon1 再宣告變數 var icon1:MovieClip=new Icon1(); 有辦法直接一次用迴圈處理完畢嗎? p.s 試過 var this['icon'+i]=new this['Icon'+i]; 這個寫法似乎不行... 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.141.156

11/19 00:37, , 1F
this["icon"+1] = new getDefinitionByName("icon"+i);
11/19 00:37, 1F
請問cj 為什麼用 getDefinitionByName 這個指令就可以了呢? 謝謝 ※ 編輯: kirai 來自: 61.64.142.146 (11/19 09:19)

11/20 02:52, , 2F
getDefinitionByName是AS3內建reflection函式
11/20 02:52, 2F

11/20 02:53, , 3F
然後new this本身就是非法語法,其實沒什麼為什麼...
11/20 02:53, 3F

11/20 06:42, , 4F
咧,我說錯了, new this["something"]可以是合法的
11/20 06:42, 4F

11/20 06:42, , 5F
只要this["something"]是一個正確的Class物件參考就OK
11/20 06:42, 5F

11/20 06:43, , 6F
var this[...這部分才是非法,因為var後面不能接this
11/20 06:43, 6F

11/20 23:39, , 7F
那用this["icon"+1] = new getDefinitionByName("icon"+i)
11/20 23:39, 7F
那用this["icon"+1] = new getDefinitionByName("icon"+i) 這個語法是直接宣告出iconi這個變數 但就語意來看, 沒有指定他的類別耶 這樣宣告出的變數不是無法確定類別嗎? 不好意思問題這麼多.... ※ 編輯: kirai 來自: 61.64.86.103 (11/20 23:42)

11/21 07:45, , 8F
記得沒指定預設是Object
11/21 07:45, 8F

11/21 10:22, , 9F
用迴圈宣告變數只能用這個dynamic variable語法
11/21 10:22, 9F

11/21 10:22, , 10F
缺點就是沒有compile-time type check支援
11/21 10:22, 10F

11/21 10:23, , 11F
真的要type-safe的話,就用Vector.<Type>吧
11/21 10:23, 11F

11/21 10:23, , 12F
var v:Vector.<Type> = new Vector.<Type>();
11/21 10:23, 12F

11/21 10:24, , 13F
v[i] = new Type(); 這樣
11/21 10:24, 13F

11/21 10:25, , 14F
其實這樣效能也比較好,因為dynamic variable存取是使用
11/21 10:25, 14F

11/21 10:25, , 15F
map,而Vector使用的是陣列
11/21 10:25, 15F

11/21 11:27, , 16F
謝謝解答
11/21 11:27, 16F
剛試了一下 TypeError: Error #1064: 無法將方法 global/flash.utils::getDefinitionByName()當作建構函式呼叫。 冏 ※ 編輯: kirai 來自: 61.64.140.40 (11/21 17:39)

11/21 21:05, , 17F
var v:Vector.<Class> = new Vector.<Class>()
11/21 21:05, 17F

11/21 21:05, , 18F
v.push(getDefinitionByName("icon"+(i++)))
11/21 21:05, 18F

11/21 21:05, , 19F
trace(v)
11/21 21:05, 19F

11/21 23:47, , 20F
也就是一定要先建立一個向量 or陣列來存放new出來的物件?
11/21 23:47, 20F
文章代碼(AID): #1Gg2DNt6 (Flash)
討論串 (同標題文章)
文章代碼(AID): #1Gg2DNt6 (Flash)