0

我正在尝试将字符串数组转换为舞台上已经存在的 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 中编码的。

需要有人帮助我找出将字符串转换为 MOvieclip 的正确方法。

感谢您的帮助。

4

2 回答 2

3

我认为问题很可能是您将MovieClip演员添加到了错误的位置,就好像对象 bar_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');
}
于 2013-04-16T12:09:18.303 回答
0

您应该像这样将 MovieClips 存储在数组中:

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 的唯一子项,为什么不使用 bar_mc 的显示列表而不是像这样的数组:

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');
}
于 2013-04-16T16:26:24.607 回答