Actionscript случайным образом распределяет объекты на сцене - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь распределить 3 объекта случайным образом на моей сцене, но это не работает. Мой фильм 800х800.

function makeRock():void{
    var tempRock:MovieClip;

    for(var i:Number = 1; i < 3; i++){
        tempRock = new Rock();
        tempRock.x = Math.round(800);
        tempRock.y = Math.round(-800);
        addChild(tempRock);
    }
}

Что я делаю не так?

1 Ответ

2 голосов
/ 13 мая 2011

Заменить Math.round(800); на Math.random()*800;

function makeRock():void
{
    var tempRock:MovieClip;

    var i:uint = 0;
    for(i; i < 3; i++)
    {
        tempRock = new Rock();

        tempRock.x = Math.random()*800;
        tempRock.y = Math.random()*800;

        addChild(tempRock);
    }
}

Math.round(800) только возвращается 800.

Math.random() возвращает случайное число от 0 до 1, которое можно умножить на 800, чтобы получить случайный результат 0-800. Обратите внимание: Math.random() никогда не возвращает 1.0. Всего от 0 до 1.


Дополнительная информация:

В качестве примечания: это упрощает возврат случайного элемента из массива; поскольку вы никогда не получите 1, вы можете привести результат от Math.random()*array.length к uint() и всегда находиться в пределах длины массива.

например.

var ar:Array = [1,2,"hello",4,5,6,7,8,9,0];

var randomElement:Object = ar[uint(Math.random()*ar.length)];
trace(randomElement);
...