2012-07-10 37 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