スマフォのブラウザで遊ぶソーシャルゲームでは、Mobageは「ExGame」、GREEは「Reel」または「Theatrical」というSWF変換エンジンが提供されています。その場合は、Flash Lite 1.1でパブリッシュされたSWFファイルを変換してくれるので、JavaScriptを使ってcanvasでガリガリ演出を作るよりは、まだまだFlashが活躍している現状があります。今回は、Flash Lite 1.1で重複しないランダムを作る方法を紹介します。

Flash Lite 1.1では配列が使えません。

配列が使うことさえできれば、いろんな方法がありますが、Flash Lite 1.1はActionScript4相当なので、配列というのがありません。こういう場合は、set()関数とeval()関数を駆使して、重複しないランダムを扱う方法があります。最初に、set()関数とeval()関数のおさらいから。

// set()関数は変数を作って値を代入することができます。
set("hensu", "ほげほげ");
trace(hensu); //ほげほげ と出ます。

// eval()関数は文字列で変数を呼び出すことができます。
trace(eval("hensu")); // ほげほげ とでます。

重複しない乱数を作ってみましょう。

0〜19まで数字を20個ランダムで作る例です。

ran = 20;

// r0、r1、、、r19という変数名に、数字を入れていきます。
for (i=0; i<ran; i++) {
  set("r" add i, i);
}

// 下記のおまじないをつけて、
for (i=0; i<ran; i++) {
  j = random(20);
  k = random(20);
  l = eval("r" add j);
  set("r" add j, eval("r" add k));
  set("r" add k, l);<a href="http://creator.cotapon.org/wp-content/uploads/2013/10/20131024_01.jpg"><img src="http://creator.cotapon.org/wp-content/uploads/2013/10/20131024_01.jpg" alt="20131024_01" width="490" height="319" class="aligncenter size-full wp-image-2378" /></a>
}

// 0〜19までの数字がランダムで出力されます。
for (i=0; i<ran; i++) {
  trace(eval("r" add i));
}

無事に出力されましたか?配列に保存することはできませんが、連番の変数名に、重複しないランダムな数字を入れることが出来ましたので、必要に応じで呼び出すことができます。

20131024_01
【Flash Lite 1.1】重複しないランダムを生成する方法
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です