(Actionscript 3 noob)你如何正确使用“继续”?

时间:2013-03-07 03:23:38

标签: actionscript-3

我要做的就是我需要在9圈上添加50%的alpha而不是第五个,这是我到目前为止所尝试的...我缺少什么?顺便说一句,如果我用“break”替换“continue”,那就完美了。

function rendreAlpha(pEvt:MouseEvent)
{
    for (var i:int=1; i<=9; i+=1)
    {
        trace(i);
        this["balle" + i + "_mc"].alpha = 0.5;
        if (i == 5)
        {
            continue;
        }
    }
}
btn2.addEventListener(MouseEvent.CLICK,rendreAlpha);

3 个答案:

答案 0 :(得分:2)

在设置if后,alpha运行

因此,continue;并未跳过任何其他代码。

答案 1 :(得分:1)

continue将结束for循环中的当前迭代并移至下一个循环,跳过在该迭代的continue语句之后将发生的任何操作。

break将结束整个循环并跳过该迭代后的任何代码。

这是一个小型演示,可以帮助您更清楚地理解:

for(var i:int = 0; i < 10; i++)
{
     if(i < 5)
     {
         // Skip the rest of the code in this block and move to the
         // next iteration.
         continue;
     }

     trace(i);

     if(i === 8)
     {
         // End the entire loop.
         break;
     }
}

您会注意到您的输出仅包含5,6,7 & 8。这是因为如果continue小于5,我们trace并跳过块中的i语句,并在它达到8时结束循环。

答案 2 :(得分:0)

在Flash player 10.1中:

private static function stackDump():void
    {

        //obj can be an object, dictionary, vector, array.
        //probably anything that can be accessed using bracket notation.
        var obj:Array = [1, 2];
        var dex:int = 0;

        //if you access an object,vector,array,or dictionary using a nested incrimentor operator
        //followed by a continue statement, you will get a stack dump.
        //The loop can be a for, while, or do loop.
        while (false)
        {
            obj[dex++] = 0;
            continue;
        }

    }//end stackDump