2

I'm incrementing a given value in cycle limit of say 6. I'm curious how we can make this code shorter.

function Cycle_Value(inc_value:Number = 5, times:Number = 3):Number
{
    var return_value:Number = inc_value;        

    while(times >= 1)
    {
       if(inc_value < 6)
       {
          inc_value++;
          return_value = inc_value;
       }
       else if(inc_value == 6)
       {
          return_value = 1;
          inc_value = 1;
       }
       else
          trace(inc_value+" is out of bounds");

        times--;
    }
    return return_value;
}

Sample Output: Cycle_Value(5,2) = 1, Cycle_Value(6,10) = 4
4

1 回答 1

2

尝试这个:

function Cycle_Value(inc_value:Number = 5, times:Number = 3):Number
{
   return (inc_value -1 + times) % 6 + 1; 
}

您可以在以下位置找到有关模运算符的更多信息:http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html#modulo

注意 1:如果您愿意使用 0 .. 5 而不是 1 .. 6 范围内的数字,您可以简单地使用以下表达式

(inc_value + times) % 6

注 2:就我个人而言,我会使用不同的名称,例如 value 代替 inc_value 和 inc 代替 times。

于 2012-11-27T12:41:26.980 回答