0

私はActionScript3の初心者ですが、MovieClipsの配列をトラバースし、そこから100個のランダムなクリップを選択してそれらのインスタンスをステージに配置しようとしていますが、コードで未定義のエラーが発生することがあります。コードがほとんどの場合うまく機能し、コンパイル時のエラーが発生しないのはなぜか混乱しています。

これが私のコードです:

for(var i:int = 0; i<100;i++)
{

   var rndNum:Number = Math.round(Math.random()*arr.length);
   this.addChild(arr[rndNum]);
}
4

1 に答える 1

4

ランダムに生成されたインデックスを丸めているため、範囲外の例外が発生する可能性があります。これは、配列の長さまでの数値を生成しているためであり、配列の全長を表す数値が有効なインデックスになることはありません。インデックスは0から始まるため、その配列。

に変更するだけMath.roundですMath.floor

var rndNum:Number = Math.floor(Math.random()*arr.length);

または、arrの長さから-1を実行します。

var rndNum:Number = Math.round(Math.random()*(arr.length-1));
于 2012-12-20T19:03:01.017 に答える