2014-02-06 2 views
0

Я видел несколько случайных чисел вопрос, но не undertsnad его и как я могу использовать его. Я хочу создать число от 0.5 до 2 EG 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

Хорошо решена для ряда randum от 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.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 .. Если вы хотите, чтобы быть динамичными, вы можете изменить 10 с Math.pow(10, dp); с DP быть yow много десятичных знаков, которые вы пожелаете.

Смежные вопросы