プロが教える店舗&オフィスのセキュリティ対策術

FLASHで簡単なゲームを作っています。ボタンをクリックするとランダムな画像(もしくはシーン)を表示させるにはどうすればよいでしょうか。よろしくお願いします。

A 回答 (1件)

さて,どうしましょう???



スクリプトは結構簡単です。でも,たくさん方法があって,どのようにされたいかがわからないと,答えにくいのです…
と言っても,どのようにしたいかが答えにくいですよね。

>> ボタンをクリックするとランダムな画像を表示させる~~

うーん,困った。
すみませんが,案を出します。その他の場合もほぼ同様にできると思うので,応用してみてください。


ムービークリップの中の各フレームに5枚の画像を用意して,
それをランダムに呼び出す(そのフレームまでgotoする)のを例とします。

まず,ムービークリップを用意してください。
ムービークリップのインスタンス名を「gazou」とでもしておきましょう。
そのムービークリップの編集で,
ムービークリップを6フレームにし,各フレームをキーフレームにして,
2~6の各キーフレームそれぞれに1枚ずつ,合計5枚の画像を配置してください。
1フレームは空白キーフレームにして,そのフレームには

stop();

と書いてムービークリップを止めておきます。
これで,ムービークリップの準備は完了。

次に,メインのアニメーションの編集に移ります。
画像ランダム表示用のボタンを用意して,そのボタンに,
----------------------------------
on (release) {
FlmNo = Math.floor(Math.random()*5)+1;
_root.gazou.gotoAndStop(FlmNo);
}
----------------------------------
↑または,↓
----------------------------------
on (release) {
FlmNo = random(5)+1;
_root.gazou.gotoAndStop(FlmNo);
}
----------------------------------

と書きます。FlmNoは勝手に決めた変数名で何でも良いです。
これで,ムービークリップ内のランダムなフレームが表示されるので,ランダムな画像が表示されます。

「↑または↓」と書いています。これはどっちでも良いのですが上の方が推奨されています。
でも,下の方が,ランダムに近いです。
これを改良して使用してください。

FlmNo = Math.floor(Math.random()*5)+1;

の部分が,少し難しいですよね,解説しておきます。
日本語で書くと,

変数FlmNo = 数.小数切捨て(数.0以上1未満の乱数×5)+1

というような意味です。
よく考えればわかると思いますが,もっと簡単に書くと,

変数FlmNo = 0~4までの乱数 + 1

と言うことで,1~5までのどれかの数が得られます。
この1~5を,「gotoAndStop()」の ( ) に代入しています。


>> (もしくはシーン)を表示させるにはどうすれば…

シーンは,制約があるので,考えるのは簡単ですが書くのは手間です。
「シーン *」は引用符 (" ") で囲む必要があるからです。

下は,ボタンをクリックすると,2~6のどれかのシーンにgotoする例です。
「シーン 1」にボタンがあると想定しているため,以下のようなスクリプトになります。

----------------------------------
on (release) {
sceneNo = Math.floor(Math.random()*5)+2;
if (sceneNo == 2) {
gotoAndPlay("シーン 2", 1);
} else if (sceneNo == 3) {
gotoAndPlay("シーン 3", 1);
} else if (sceneNo == 4) {
gotoAndPlay("シーン 4", 1);
} else if (sceneNo == 5) {
gotoAndPlay("シーン 5", 1);
} else if (sceneNo == 6) {
gotoAndPlay("シーン 6", 1);
}
}
---------------------------------

sceneNoは勝手に決めた変数名です。
とりあえず,

sceneNo = Math.floor(Math.random()*5)+2;

つまり,

変数sceneNo = 0~4までの乱数 + 2

で,2~6まで(5シーン)のsceneNo(シーンNo)を得ておいて,
2だったら「シーン 2」へ,3だったら「シーン 3」ヘ…
とgotoするということです。
gotoAndPlayにしていますが,gotoAndPStopでも良いです。

スクリプト自体は,シーンの場合も,もっと簡単にできることはできるのですが,
仕組みを作るのにちょっと手間なのと,説明が難しくなります。

こんなところで,どうでしょうか。

この回答への補足

私の知識不足で操作に戸惑い、ご報告が遅くなりましたが、フレームに画像を配置する方法で、今回の問題は無事解決いたしました。これから、シーンの操作にを試してみたいと思います。
今回教えていただいたスクリプトは、今後もとても役に立ちそうです。機会がありましたら、是非またご指導いただけますようお願いいたします。
このたびは、まことにありがとうございました!

補足日時:2005/06/11 16:20
    • good
    • 0
この回答へのお礼

丁寧な回答いただきありがとうございます。回答いただいていたことに気づかずあきらめかけておりました。。。御礼が遅くなり申し訳ありません。
さっそくこれから試してみます!

お礼日時:2005/06/09 10:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!