Re: [問題] 如何方便的 new 新物件 ???
※ 引述《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
07/12 17:24, 1F
→
07/12 17:25, , 2F
07/12 17:25, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):