2014-01-21 43 views
0

我有内部4个影片剪辑容器4个影片剪辑和滤镜名为 “myShadowFilter”,就像这样:的ActionScript 3 - 将字符串转换为命令

option1BlueBox 

里面

option1Container 

一个影片剪辑
option2Container 

是一个movieclip里面

option2BlueBox 

等等。我想这样做:

option1Container.option1BlueBox.filters = [myShadowFilter]; //line1 
option2Container.option3BlueBox.filters = [myShadowFilter]; //line2 
option3Container.option4BlueBox.filters = [myShadowFilter]; //line3 
option4Container.option5BlueBox.filters = [myShadowFilter]; //line4 

除了具有循环,监守我可能会添加更多的容器,每个容器里面的影片剪辑。什么我想要做一个sudo的代码是:

var containers:int = 1; 
for (var i:int = 1; i<containers + 1, i++) { 
'option' + i + 'Container.option' + i + 'BlueBox.filters = [myShadowFilter];'; 
} 

基本上,我只想一个循环,这将运行所有4个命令。我如何使它工作?它给我错误(正如我预期的那样),说有语法错误和冒号。

回答

3

使用Array接入运营商。有关更多详细信息,请参见this

var containers:int = 1; 
for (var i:int = 1; i<containers + 1, i++) { 
    this['option' + i + 'Container']['option' + i + 'BlueBox'].filters = [myShadowFilter]; 
} 

你也许可以通过给蓝盒夹相同的实例名称(它只需要是当前范围内是唯一的)进一步简化了这一点。然后你可以这样做:

// Create an array of containers 
var containers = [ 
    option1Container, 
    option2Container, 
    option3Container, 
    option4Container 
]; 

// Loop through each container and apply the filter 
// to the blue box container clip 
for (var i = 0; i < containers.length; i ++) 
{ 
    containers[i].option1BlueBox.filters = [myShadowFilter]; 
} 
+0

完美。感谢您的额外简化。 – user2817200

相关问题