AS3 Array对象通过排序显示

时间:2012-03-23 10:44:11

标签: arrays actionscript-3 flash

我在舞台上有3个MC,都是alpha = 0

var mcArray:Array = [mc1,mc2,mc3];
for (var j:int = 0; j < mcArray.length; j++)
{
    mcArray[j].alpha = 0;
}

我有一个按钮,一旦我点击它然后它将使MC成为alpha = 1

revealBtn.buttonMode = true;
revealBtn.useHandCursor = false;
revealBtn.addEventListener(MouseEvent.CLICK, revealClick);

function revealClick(event:MouseEvent):void
{
    for (var j:int = 0; j < mcArray.length; j++)
    {
        mcArray[j].alpha = 1;
    }
}

但是使用上面的脚本会使所有3 MC成为alpha = 1.

我知道这可以通过使用以下代码来实现:

if(mc1.alpha!=1){
mc1.alpha=1
}
if(mc2.alpha!=1){
mc2.alpha=1
}
if(mc3.alpha!=1){
mc3.alpha=1
}

此代码将提供我想要实现的内容,但如果有超过3个MC,则脚本行将更长。

3 个答案:

答案 0 :(得分:3)

revealBtn.buttonMode = true;
revealBtn.addEventListener(MouseEvent.CLICK, revealClick);

var mcArray:Array = [mc0,mc1,mc2];

function revealClick(event:MouseEvent):void
{
    for(var i:uint = 0; i<mcArray.length; i++){
        if(this['mc'+i].alpha !== 1){
            this['mc'+i].alpha = 1;
            break;
        }
    }
}

答案 1 :(得分:1)

不,if语句仍会将所有三个都转换为alpha 1.

点击后,您想将三个中的哪一个设置为alpha = 1?

您可以使用类似的东西在数组中第一个没有alpha = 1的mc上设置alpha = 1

function revealClick(event:MouseEvent):void {
    for (var j:int = 0; j < mcArray.length; j++){
        if ( mcArray[j].alpha != 1 ){
            mcArray[j].alpha = 1;
            return;
        }
    }
}

答案 2 :(得分:1)

只需使用计数器。

var cnt : int = -1; 
function revealClick(event:MouseEvent):void
{
    if(++cnt < mcArray.length) mcArray[cnt].alpha = 1;
}