0

ステージ上に 3 つのオブジェクトをランダムに配置しようとしていますが、うまくいきません。私のムービーは 800x800 です。

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);
    }
}

私は何を間違っていますか?

4

1 に答える 1

2

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);
于 2011-05-12T23:13:48.583 に答える