ぐるぐるポンで、配列をランダムに並べ替えて連結、ということをやってるのですが、そもそも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; }
よろしくどうぞ☆
コメントを残す