【问题标题】:actionscript for loop iterator to change movie clip name循环迭代器的动作脚本以更改影片剪辑名称
【发布时间】:2012-07-10 04:02:42
【问题描述】:

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

这是我的代码:

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

所以我有 100 个条形图,每个条形图都称为 leftBar 及其编号。所以第一个Bar 是leftBar1,然后是leftBar2,以此类推。但是我不能让它工作。我试过"leftBar"+ileftBari,但它们似乎都不起作用。

【问题讨论】:

    标签: actionscript-3 flash-cs5 movieclip


    【解决方案1】:

    在循环中选择每个 MovieClip 的正确方法是:

    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);
    

    【讨论】:

    • 如果影片剪辑在另一个影片剪辑中怎么办?会是这个["barHolder.leftBar" +i]?
    • @lomas09 不,应该是barHolder["leftBar" + i],因为每个leftBar 都是barHolder 的属性,而不是this
    猜你喜欢
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多