2014-02-06 92 views
0

我已經看到了幾個隨機數問題,但不要undertsnad它,以及如何使用它。我想要生成一個介於0.5和2之間的數字0.5,1.1,1.2,1.3等,並在補間中使用它。以下是我有:AS3隨機數

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將前往他們的位置,速度:

任何幫助讚賞

伊恩

回答

1

好解決了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}); 
    } 
} 
0

Math.random()返回0.0到0.99999999 {不知道有多少個小數位)。

所以,如果你的隨機數是.23456然後你做* (2 - 0.5 + 1)帶到0.5864

Math.floor()正在刪除您的小數位。

那麼這是帶你的0.58640。然後你+ 0.5。把它帶到奇怪的0.5

如果您需要將結果保存到小數點後第一位,如列出的那樣,Math.floor的問題太早。嘗試:

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

如果需要超過1個個小地方,你可以把10到100 2,或1000 3 ..如果你想這是動態的,你可以用Math.pow(10, dp); DP是改變10你想要多少小數點。