Re: [問題] 如何方便的 new 新物件 ???

看板Flash作者 (星之影)時間15年前 (2010/07/12 15:37), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《yhn0tgb60 (呦厚厚)》之銘言: 前面恕刪!! : : : 而因為物件的種類有上百種 : 那我的 case() 就要把上百種 : 這樣很沒效率 : 而且我已經特地把 String 的內容 設定跟物件的名稱一樣了 : 有辦法直接用 String 的名稱來 new 物件嗎 ??? : 例如像這樣 : : var _array:Array = [ 很多筆String ]; : : for( var i in _array ) : { : var _mc:MovieClip = new _array[i](); : } : : 的辦法解決嗎 ??? : : hmm.... 不知道我有沒有會錯意 不過你要的是這種寫法嗎? var Descript:Sprite = new Sprite; var LvArray:Array = new Array(SealLv1, SealLv2, SealLv3, SealLv4); var Level:int = 0; while ( Level < _obj.level) { var LvSymbol:MovieClip = new LvArray[Level]; Descript.addChild(LvSymbol); Level++ } 上面這串是我早上隨意測試的成品 也剛好是我現在手上Case的一串 code Descript 是一個 Sprite SealLv1 ~ SealLv4 是四個不同的 movieClip 雖然要呼叫做好的 mc 應該是 var Lv1:SealLv1 = new SealLv1; 可是我測試 var Lv1:MovieClip = new Array[i]; 這種呼叫方式也可以用 所以就.... 用了!! 不過我也想知道上面兩種呼叫方法有沒有差異!! 不知道是否有高手可以解答 ? : 另外就是假如要像上面的方法那樣做一大串的 case : 想請問用 switch 的效能比較好 ??? 還是用 if else 的效能比較好 ??? : 謝謝了 ^^ 這好像要看編譯器... : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 122.116.155.241 : 推 kawasumimai:好像有看過new MovieClip(xxxxxx(String))的寫法 07/11 01:10 : → cjcat2266:new Class(getDefinitionByName(i))(); 07/11 01:10 : → cjcat2266:i為qualified class name 07/11 01:10 我對 CJ 大的方式很好奇... ( 先去 google 看看好了!!) 以下是 google 到的範例XD import flash.utils.getDefinitionByName; //必須import var declarePage:Class = getDefinitionByName("page" + index) as Class; var _mc:MovieClip = new declarePage(); 看來我的做法是 Array[i] 被當作 class .... 所以才能這樣作!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.245.139 ※ 編輯: STARGAZERs 來自: 114.25.245.139 (07/12 15:46)

07/12 17:24, , 1F
原po應該是想要從qualified class name字串取得原本的
07/12 17:24, 1F

07/12 17:25, , 2F
Class object,那就要用getDefinitionByName()
07/12 17:25, 2F
文章代碼(AID): #1CEiOlkE (Flash)
文章代碼(AID): #1CEiOlkE (Flash)