AS3: 2009年11月アーカイブ

ぐるぐるポンで、配列をランダムに並べ替えて連結、ということをやってるのですが、そもそも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;
}

よろしくどうぞ☆

AS3: 月別アーカイブ

月別 アーカイブ

最近のコメント

(c)1999-2010 Junka
Powered by Movable Type Pro