我正在尝试将字符串数组转换为舞台上已存在的MovieClip名称。
这就是我这样做的方式,但是鼻涕似乎有效。 我在舞台上有11个动画片段。它们的实例名称是“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中编码的。
需要有人帮我找出将字符串转换为MOvieclips的正确方法。
帮助你。
答案 0 :(得分: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');
}
答案 1 :(得分:0)
您应该将MovieClip存储在数组中,如下所示:
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');
}
更好的是,如果你在该数组中的按钮是bars_mc的唯一子项,为什么不使用bars_mc的display 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');
}