2013-04-16 15 views
0

我想將字符串數組轉換爲舞臺上已經存在的MovieClip名稱。在AS 3.0中將字符串值轉換爲MovieClip

這是我是如何做到這一點,但doe鼻涕似乎工作。 我在舞臺上有11個movieclip。你的實例名稱是「bmc1」,「bmc2」等等。 所有這些BMC影片剪輯位於名爲「bars_mc」的剪輯中。所以這就是我現在編碼的方式。

var myBtnArray = ['bmc1', 'bmc2', 'bmc3', 'bmc4', 'bmc5', 'bmc6', 'bmc7', 'bmc8', 'bmc9', 'bmc10', 'bmc11']; 
for each (var btn in myBtnArray){ 
    bars_mc.MovieClip(getChildByName(btn)).gotoAndPlay('open'); 
} 

這是行不通的。 我曾嘗試過:

this[btn] 

這也沒有工作。 這是在AS 3.0編碼。

需要有人t0幫助我找出將字符串轉換爲MOvieclips的正確方法。

請求您的幫助。

+1

爲什麼不用電影剪輯來填充你的數組而不是字符串的名字? –

回答

3

我認爲這個問題很可能是您在錯誤的位置添加了MovieClip強制轉換,就好像對象bars_mc上有一個MovieClip屬性。

這個例子涉及一個額外的行,但應該更清楚一點:

var myBtnArray = ['bmc1', 'bmc2', 'bmc3', 'bmc4', 'bmc5', 'bmc6', 'bmc7', 'bmc8', 'bmc9', 'bmc10', 'bmc11']; 
for each (var btn:String in myBtnArray) { 
    var btnClip:MovieClip = bars_mc[btn] as MovieClip; 
    btnClip.gotoAndPlay('open'); 
} 

,更接近原始的版本是:

var myBtnArray = ['bmc1', 'bmc2', 'bmc3', 'bmc4', 'bmc5', 'bmc6', 'bmc7', 'bmc8', 'bmc9', 'bmc10', 'bmc11']; 
for each (var btn:String in myBtnArray) { 
    MovieClip(bars_mc[btn]).gotoAndPlay('open'); 
} 
+0

非常感謝,這解決了我的問題:) – ssdesign

0

你應該只在影片剪輯存儲在陣列像這樣:

var myBtnArray = [bars_mc.bmc1, bars_mc.bmc2, bars_mc.bmc3, bars_mc.bmc4, bars_mc.bmc5, bars_mc.bmc6, bars_mc.bmc7, bars_mc.bmc8, bars_mc.bmc9, bars_mc.bmc10, bars_mc.bmc11]; 
for each (var btn in myBtnArray){ 
    btn.gotoAndPlay('open'); 
} 

更好,如果你在該數組中的按鈕是唯一的c bars_mc的承運,爲什麼不直接使用的,而不是像這樣的數組bars_mc的顯示LIS:

for (var index:int = 0;index < bars_mc.numChildren;index++) 
{ 
    var btn:MovieClip = bars_mc.getChildAt(index) as MovieClip; 
    btn.gotoAndPlay('open'); 
} 

但是,如果你想要去的,你現在選擇的路線,你可以這樣做:

var myBtnArray = ['bmc1', 'bmc2', 'bmc3', 'bmc4', 'bmc5', 'bmc6', 'bmc7', 'bmc8', 'bmc9', 'bmc10', 'bmc11']; 
for each (var btn:String in myBtnArray) { 
    MovieClip(bars_mc[btn]).gotoAndPlay('open'); 
}