ぐるぐるポンで、配列をランダムに並べ替えて連結、ということをやってるのですが、そもそもASに配列をランダムに並べ替えるメソッドが無いので、自作する しかないんですよね。
ググれば出てきたかもしれないんですが、難しいことでもないので、探すより早いと思って自分で考えて作りました。
最初はこうだったんだけど
function shuffleArray(arr:Array):Array {
var retArr:Array = new Array();
while (arr.length > 0) {
retArr.push(arr.splice(Math.floor(Math.random() * arr.length), 1).toString());
}
return retArr;
}
これだと配列の要素が全部Stringになっちゃうんで
こうしました
function shuffleArray(arr:Array):Array {
var shArr:Array=new Array();
for (var i:uint=0; i<arr.length; i++) {
var tempObj:Object=new Object();
tempObj.val=arr[i];
tempObj.key=Math.random();
shArr.push(tempObj);
tempObj=null;
}
shArr.sortOn('key',Array.NUMERIC);
var retArr:Array=new Array();
for (var j:uint=0; j<shArr.length; j++) {
retArr.push(shArr[j].val);
}
shArr=null;
return retArr;
}
よろしくどうぞ☆
最近のコメント
順加(2009/08/07-23:39)
nobu(2009/08/07-23:35)
順加(2009/07/29-00:25)
無學童子(2009/07/29-00:22)
順加(2009/03/01-22:59)