我是ActionScript 3的初学者,我试图遍历一个MovieClip数组并从中挑选出一百个随机剪辑并将这些实例放在舞台上,但有时代码会产生一个未定义的错误。我很困惑,为什么代码在大多数时候运行良好,并且从来没有任何编译时错误。
这是我的代码:
for(var i:int = 0; i<100;i++)
{
var rndNum:Number = Math.round(Math.random()*arr.length);
this.addChild(arr[rndNum]);
}
答案 0 :(得分:4)
因为你正在舍入随机生成的索引,这可能导致索引超出绑定Exception,这是因为你生成一个数字直到数组的长度,并且表示数组总长度的数字永远不会是索引从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));