Вспышка: случайное генерирование чисел 0-9 с повторением - PullRequest
0 голосов
/ 31 января 2011

В основном мне нужно «изображение» быстро меняющихся чисел.Я планирую иметь ряд из них в строке, что-то вроде матрицы (как числа меняются неоднократно).Я хочу, чтобы они генерировали цифры 0-9 снова и снова довольно быстро (вроде миллисекунд на секундомере), пока они не исчезнут.

Я довольно новичок во флэш-памяти, так что если вы, ребята,может помочь мне с кодом, я был бы очень признателен!

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Как указано, чтобы получить случайное число от 0 до 9, Math.random - это путь:

var n:int = Math.floor(Math.Random()*10);

Но чтобы ответить на ваш второй вопрос, как его получить, чтобы он делал это каждый размиллисекунда

import flash.utils.setInterval;
import flash.utils.clearInterval;

//variable for the intervalID, 
//and the variable that will be assigned the random number
var rnGenIID:uint, rn:int;

//function to update the rn variable 
//to the newly generated random number
function updateRN():void{
    rn = random0to9();
    //as suggested, you could just use:
    //rn = int(Math.random()*10);
    //but I figured you might find having it as a function kind of useful, 
    //...
    //the trace is here to show you the newly updated variable
    trace(rn);
}
function random0to9 ():int{
    //in AS3, when you type a function as an int or a uint,
    //so instead of using:
    //return Math.floor(Math.random()*10);
    //or
    //return int(Math.random()*10);
    //we use:
    return Math.random()*10;
}

//doing this assigns rnGenIID a number representing the interval's ID#
//and it set it up so that the function updateRN will be called every 1 ms
rnGenIID = setInterval(updateRN,1);

//to clear the interval
//clearInterval(rnGenIID);
1 голос
/ 01 февраля 2011

просто быстрый совет: приведение числа (Math.random () * 10) в целое число

int( n );

делает то же самое, что и

Math.floor( n );

и намного быстрее,мы можем получить Math.round (), добавив .5 к n

int( n + .5 );

и Math.ceil (), добавив 1 к результату

int( n ) + 1;

. Вот циклпроверьте:

var n:Number;
var i:int;
var total:int = 100000;
for ( i = 0; i < total;  i++ )
{ 
    n = Math.random() * 10;
    if ( int( n ) != Math.floor( n ) ) trace( 'error floor ', n );
    if ( int( n + .5 ) != Math.round( n ) ) trace( 'error round ', n );
    if ( int( n ) + 1 != Math.ceil( n ) ) trace( 'error ceil ', n );
}

это, ничего не должно отслеживать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...