• ベストアンサー

ボタンをクリックする度にランダムな画像を表示には

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.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でも良いです。 スクリプト自体は,シーンの場合も,もっと簡単にできることはできるのですが, 仕組みを作るのにちょっと手間なのと,説明が難しくなります。 こんなところで,どうでしょうか。

suzupen
質問者

お礼

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

suzupen
質問者

補足

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

関連するQ&A