看板 Flash 關於我們 聯絡資訊
假設現在有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
cjcat2266:this["icon"+1] = new getDefinitionByName("icon"+i); 11/19 00:37
請問cj 為什麼用 getDefinitionByName 這個指令就可以了呢? 謝謝 ※ 編輯: kirai 來自: 61.64.142.146 (11/19 09:19)
cjcat2266:getDefinitionByName是AS3內建reflection函式 11/20 02:52
cjcat2266:然後new this本身就是非法語法,其實沒什麼為什麼... 11/20 02:53
cjcat2266:咧,我說錯了, new this["something"]可以是合法的 11/20 06:42
cjcat2266:只要this["something"]是一個正確的Class物件參考就OK 11/20 06:42
cjcat2266:var this[...這部分才是非法,因為var後面不能接this 11/20 06:43
kirai:那用this["icon"+1] = new getDefinitionByName("icon"+i) 11/20 23:39
那用this["icon"+1] = new getDefinitionByName("icon"+i) 這個語法是直接宣告出iconi這個變數 但就語意來看, 沒有指定他的類別耶 這樣宣告出的變數不是無法確定類別嗎? 不好意思問題這麼多.... ※ 編輯: kirai 來自: 61.64.86.103 (11/20 23:42)
sayaku0210:記得沒指定預設是Object 11/21 07:45
cjcat2266:用迴圈宣告變數只能用這個dynamic variable語法 11/21 10:22
cjcat2266:缺點就是沒有compile-time type check支援 11/21 10:22
cjcat2266:真的要type-safe的話,就用Vector.<Type>吧 11/21 10:23
cjcat2266:var v:Vector.<Type> = new Vector.<Type>(); 11/21 10:23
cjcat2266:v[i] = new Type(); 這樣 11/21 10:24
cjcat2266:其實這樣效能也比較好,因為dynamic variable存取是使用 11/21 10:25
cjcat2266:map,而Vector使用的是陣列 11/21 10:25
kirai:謝謝解答 11/21 11:27
剛試了一下 TypeError: Error #1064: 無法將方法 global/flash.utils::getDefinitionByName()當作建構函式呼叫。 冏 ※ 編輯: kirai 來自: 61.64.140.40 (11/21 17:39)
silase0201:var v:Vector.<Class> = new Vector.<Class>() 11/21 21:05
silase0201:v.push(getDefinitionByName("icon"+(i++))) 11/21 21:05
silase0201:trace(v) 11/21 21:05
kirai:也就是一定要先建立一個向量 or陣列來存放new出來的物件? 11/21 23:47