前回に続いて過去のAS2クラスをAS3に書き換えた。
整数を投げたらそれを配列にしてシャッフルして返すクラス。
理解が浅く、なぜextends MovieClipしないといけないのか分からない...。デバッガに怒られまくりながら、こんな感じになりました。有識者にご指摘頂ける日を待ち望みつつとりあえず晒しとく。
package com.nrd_studio
{
import flash.display.MovieClip;
public class OpArray extends MovieClip
{
private static var _max:uint;
private static var _a:Array = [];
public static function shuffle(n:uint)
{
_max = n;
_a = makeArray();
return xShuffleArray(_a);
}
private static function makeArray():Array
{
for( var i:uint = 0; i < _max; i++)
{
_a.push( i + 1);
}
return _a;
}
private static function xShuffleArray(arr:Array):Array
{
var i:uint = arr.length;
while(i--)
{
var j:uint = Math.floor(Math.random() * (i + 1));
var t:uint = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
_a = [];
return arr;
}
}
}
オブジェクトをnew、とかしたりしなくてもサクっと結果が返せるので楽チンかと。
var a:Array = OpArray.shuffle(20);
trace(a);
//出力:3,16,14,19,5,8,2,7,6,20,9,15,10,4,18,11,17,12,1,13