2012-04-15 56 views
-1

我在课堂上得到了很多动画片段。是否有更有效的方法将函数应用于除此之外的类中的每个实例?Actionscript 3.0获取一个类的所有实例?

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; 

我不知道为什么上述不起作用。我想要将类interinterIntro中的每个实例都变为不可见,但我想稍后再转换特定的实例。

(顺便说一句,我不知道如何到这个网站上插入代码,按“代码”没有做任何事情,所以原谅坏格式)

+1

请花点时间阅读http://stackoverflow.com/editing-help。 – spender 2012-04-15 02:12:17

+4

'interludes.interludeIntro.alpha = 0;'的行为是预期的,因为所有的孩子都将他们的父母的阿尔法乘以他们的阿尔法。所以,如果你将一个容器的'alpha'设置为'0',所有的孩子都有一个有效的'alpha'为'0'。 – Torious 2012-04-15 02:25:27

回答

1

我真的不知道你在问什么,但可能有用的是,在ActionScript中,您可以按名称引用属性,如​​。

利用这一点,你可以通过属性迭代,如果他们遵循一些命名方案,因此,例如:

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

那遍历interludes.interludeIntro.interludeBegin1通过...15,并设置其alpha属性0

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;