-1

我在一堂课上得到了大量的电影剪辑。除了这个之外,有没有更有效的方法将函数应用于类中的每个实例?

var textArray:Array = [
    interludes.interludeIntro.interludeBegin1,
    interludes.interludeIntro.interludeBegin2,
    interludes.interludeIntro.interludeBegin3,
    interludes.interludeIntro.interludeBegin4,
    interludes.interludeIntro.interludeBegin5,
    interludes.interludeIntro.interludeBegin6,
    interludes.interludeIntro.interludeBegin7, 
    //... ... ...  
    interludes.interludeIntro.interludeBegin15
];                                     
for each (var interludeText:MovieClip in interludeBeginText)
{
   interludeText.alpha = 0 //clear all text first
}

同样由于某种原因,这不起作用:

interludes.interludeIntro.alpha = 0;

即使我稍后尝试使特定实例可见,它也会永久使该类不可见:

interludes.interludeIntro.interludeBegin1.alpha = 1;

我不知道为什么上述方法不起作用。我想将 interludeIntro 类中的每个实例变为不可见,但我想稍后将特定实例变为可见。

(顺便说一句,我不知道如何在这个网站上插入代码,按“代码”没有任何作用,所以请原谅格式错误)

4

2 回答 2

1

我不太确定您在问什么,但可能有用的是,在 ActionScript 中您可以按名称引用属性,例如myObject["someProperty"].

使用它,如果属性遵循某种命名方案,您可以迭代它们,例如:

for (var i:int = 1; i <= 15; i ++)
    interludes.interludeIntro["interludeBegin" + i].alpha = 0;

遍历并将它们的interludes.interludeIntro.interludeBegin1属性设置为....15alpha0

于 2012-04-15T02:30:56.530 回答
1

当你这样做时:

interludes.interludeIntro.alpha = 0;

您将影片剪辑及其所有子项变为不可见。

所以稍后当你这样做时:

 interludes.interludeIntro.interludeBegin1.alpha = 1;

您使影片剪辑可见,但由于其父级仍然不可见,因此您什么也看不到。解决方案是循环播放影片剪辑并使它们中的每一个不可见/可见。

// Keep the parent visible at all time
interludes.interludeIntro.alpha = 1;

for (var i:int = 0; i < textArray.length; i++) {
    textArray[i].alpha = 0;
}

// Now this will work:
interludes.interludeIntro.interludeBegin1.alpha = 1;
于 2012-04-15T05:25:46.050 回答