Actionscript 3.0获取类的所有实例?

时间:2012-04-15 02:08:11

标签: arrays flash actionscript for-loop instance

我在课堂上收到了大量的电影片段。是否有更有效的方法将函数应用于除此之外的类中的每个实例?

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中的每个实例都不可见,但我想稍后将特定实例变为可见。

(顺便说一下我不知道如何在这个网站上插入代码,按“代码”不做任何事情,所以原谅糟糕的格式化)

2 个答案:

答案 0 :(得分:1)

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

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

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

迭代interludes.interludeIntro.interludeBegin1...15并将alpha属性设置为0

答案 1 :(得分: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;