AS3随机数

时间:2014-02-06 12:04:09

标签: arrays actionscript-3 flash random tween

我已经看过几个随机数问题但是没有取消它以及如何使用它。我想生成0.5到2 EG 0.5,1.1,1.2,1.3等之间的数字,并在补间中使用它。这就是我所拥有的:

var letters:Array = [Rbox1, Rbox2, Rbox3, Rbox4, Rbox5, Rbox6,
                     Rbox7, Rbox8, Rbox9, Rbox10, Rbox11, Rbox12]

function randomRange(minNum:Number, maxNum:Number):Number
{
    return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);
}

start_mc.addEventListener(MouseEvent.CLICK, startAni);
function startAni(event:MouseEvent):void{
    for (var i:String in letters) {
        var letterX:int = letters[i].x;
        var letterY:int = letters[i].y - 450;
        TweenLite.to(letters[i], 1, {x:letterX, y:letterY});
    }
}

此行中的1变为随机数

TweenLite.to(letters[i], 1, {x:letterX, y:letterY});

这是每个Rbox将前往其位置的速度:

任何帮助表示赞赏

伊恩

2 个答案:

答案 0 :(得分:1)

Ok解决了1到10之间的随机数

start_mc.addEventListener(MouseEvent.CLICK, startAni);
function startAni(event:MouseEvent):void{
    TweenLite.to(start_mc, 1, {alpha:0});
    for (var i:String in letters) {
        var letterX:int = letters[i].x;
        var letterY:int = letters[i].y - 450;

        var minLimit:uint = 1;
        var maxLimit:uint = 10;
        var range:uint = maxLimit - minLimit;
        var myNum:Number = Math.ceil(Math.random()*range) + minLimit;

        TweenLite.to(letters[i], myNum, {x:letterX, y:letterY, delay:1});
    }
}

答案 1 :(得分:0)

Math.random()返回0.0到0.99999999 {不确定小数位数。)

因此,如果您的随机数为.23456,那么您* (2 - 0.5 + 1)会将其带到0.5864

Math.floor()正在删除小数位。

然后,这会将您的0.5864带到0。然后你+ 0.5。把它变得奇怪0.5

如果您需要的结果是小数点后1位,如您所列,数学问题是Math.floor太早。尝试:

var result:Number = Math.floor(((Math.random() * (max - min)) + min) * 10) / 10;

如果您需要超过1个小数位,则可以将10变为100表示​​为2,或者将1000表示为3 ..如果您希望这是动态的,则可以使用Math.pow(10, dp);更改10,其中DP为0小数点你想要的。