すみませんが,私は ParaFla の仕様(使い方)がわかりません。
したがって,
テキストフィールドの作成方法や,インスタンス名の付け方などがわかりません。
ですから,全て ActionScript で説明します。
新しくPraFlaを起動させて,
次のスクリプトをフレーム(というのでしょうか?)にコピペして,
SWFファイルを生成してもらえば,
勝手にテキストフィールドが作成されて,
勝手に重複のない1~25の数字を表示するものができると思います。
//////////////////////////////////////////////////////////////////////////
// ---↓テキストフィールドを手動作成する場合は不要です↓---
/*
インスタンス名
my_txt00 my_txt01 my_txt02 my_txt03 my_txt04
my_txt10 my_txt11 my_txt12 my_txt13 my_txt14
my_txt20 my_txt21 my_txt22 my_txt23 my_txt24
my_txt30 my_txt31 my_txt32 my_txt33 my_txt34
my_txt40 my_txt41 my_txt42 my_txt43 my_txt44
というならびのテキストフィールドを作成↓
*/
// テキストフォーマットクラスのインスタンス my_fmt を作成
my_fmt = new TextFormat();
// 文字の大きさは 32 point でセンタリングしておきます(適当です)
my_fmt.size = 32;
my_fmt.align = "center";
//
// テキストフィールドインスタンス my_txt00~my_txt44 を作成
for (ny=0; ny<=4; ny++) {
for (nx=0; nx<=4; nx++) {
_root.createTextField("my_txt"+ny+nx, ny*10+nx, nx*50, ny*50, 50, 50);
_root["my_txt"+ny+nx].border = true;
}
}
// ---↑テキストフィールドを手動作成する場合は不要です↑---
// -------------↓ここからが本題です↓------------------
//
// 配列 my_arr 要素[1,2,3,4, … ,25] を作成
my_arr = new Array();
for (i=0; i<=24; i++) {
my_arr[i] = i+1;
}
// 配列の要素の入れ替え
// 重複のない1~25の乱数を my_arr に入れ直す
for (i=0; i<=24; i++) {
// 変数 r に順次繰り下がる乱数を代入
r = Math.floor(Math.random()*(25-i));
// 変数 n に順次繰り上がる my_arr[i] の値を退避
n = my_arr[i];
// 配列 my_arr の i+r 番要素を i 番要素に代入
my_arr[i] = my_arr[i+r];
// 退避させておいた変数 n の値を配列 my_arr の i 番要素に代入
my_arr[i+r] = n;
}
// テキストフィールド my_txt00~my_txt44 に配列の要素を代入
// 変数 i の初期化
i = 0;
for (ny=0; ny<=4; ny++) {
for (nx=0; nx<=4; nx++) {
_root["my_txt"+ny+nx].text = my_arr[i];
i++;
//(上で決定したTextFormatを適用 (手動で作成する場合は不要))
_root["my_txt"+ny+nx].setTextFormat(my_fmt);
}
}
//////////////////////////////////////////////////////////////////////////
書き方は違いますが,
重複のないランダムな数の列挙は,
次のURLのアルゴリズムと同じです。
「配列を偏りなくランダムに並替える」
http://www.fumiononaka.com/TechNotes/Flash/FN0212003.html
お礼
無事できました。 ご親切にご回答ありがとうございます。