2012-07-10 85 views
0

我有一堆我在Flash CS5中创建的影片剪辑,都放在舞台上。我使用ActionScript 3动态地使用代码动态控制它们中的每一个。但是,我想使用for循环同时控制它们的所有内容,并且只是更改每个元素的宽度,但不工作。actionscript for循环迭代器更改影片剪辑名称

这里是我的代码:

for(var i:Number = 0; i < 100; i++) 
{ 
    leftBar+i.width = (Math.round(channel.rightPeak * 1.1)) + 60; 
} 

所以,我必须每100条叫leftBar其数量。所以第一个是leftBar1,然后leftBar2等等。但我无法让它工作。我试过"leftBar"+ileftBari但他们都没有工作。

回答

0

正确的方法在你的循环选择每个这些影片剪辑的是:

this["leftBar" + i] 

新代码:

// Note: We've changed the initial value of i to 1 because you mentioned that 
// your first MovieClip was called 'leftBar1' rather than 'leftBar0'. 
for(var i:int = 1; i <= 100; i++) 
{ 
    var current:MovieClip = this["leftBar" + i]; 
    current.width = Math.round(channel.rightPeak * 1.1) + 60; 
} 

基本上你想利用this选择属性leftBar0leftBar1等方括号。这是一样的这样做:

this.leftBar0 

,也可用于任何性质或任何其他类的方法:

// Example of Square Bracket notation. 
var sprite:Sprite = new Sprite(); 

sprite["x"] = 10; 
trace(sprite.x); 

this["addChild"](sprite); 
+0

如果影片剪辑是另一个影片剪辑内?会是这个[“barHolder.leftBar”+ i]吗? – lomas09 2012-07-10 04:22:16

+0

@ lomas09不会,它会是'barHolder [“leftBar”+ i]'因为每个'leftBar'都是'barHolder'的属性而不是'this'。 – Marty 2012-07-10 04:23:35

+0

它的工作。谢谢 – lomas09 2012-07-10 04:29:19