• ベストアンサー

Flashでクイズの得点別にEDを変える方法

お世話になります。 Flash(CS6 AS2)を使用したクイズゲームを http://orange.2-d.jp/flash/action/19.html のサイトを参考にして作成してます。 点数別のエンディング(イラスト)を表示させたいと思っているのですが、 「点数別に文字やイラストの表示を変える方法」がわかりません。 どのようなスクリプトを使えばよいのでしょう? 教えていただけると嬉しいです。 宜しくお願いします。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

そもそも, その提示されているページのサンプルは 『「ランダム問題出題」 ランダムに問題を出題して、100点になれば終了。』 という仕様(ルール)のゲームですよ。 つまり 元から100点にしかならない仕様(ルール)です。 (10問正解しないと終わらない仕様なのです。) ですから, 「点数別にエンディングのイラストを変える」 などという以前の話で 100点にしかならない仕様自体を変える必要があるということになります。 したがってまずは 「どんな仕様(ルール)にするのか?」 これを考えなければ, スクリプトも何も書けません。 本来は作成者(質問者)が仕様(ルール)を決めるべきです。 しかし何も書かれていないため何も回答できません。 これでは困ると思うので, 私(回答者)が勝手に仕様(ルール)を考えるとします。 /*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/ ◎仕様(ルール) 『ランダムに問題を出題して、 1問10点の問題を10問解いた時点で終了。 そして得点に応じた絵柄を表示する。』 このような仕様(ルール)にするものとして 以下の回答を続けます。 提示されているページの 「サンプルダウンロード」より 「00.fla」をダウンロード&保存させてもらった上で その「00.fla」を改変する方向で回答します。 まず 「00.fla」のメインタイムラインの 「Action」レイヤー フレーム1 のスクリプトを次のようにします。 stop(); _global.point=0; //点数用変数の宣言と初期値設定 _global.seigo=0; //正誤判定用変数の宣言と初期値設定 _global.count=0; //←★付け加え そして 「正誤判定」レイヤー フレーム2 以降にある MC(ムービークリップ) である小さな○を選択し その MC 自体に書かれてあるスクリプトを 次のようにします。 onClipEvent (enterFrame) { if(_global.seigo == 1){ //正解の場合 _global.point+=10; //10点加算 _global.seigo =0; //判定初期化 this.gotoAndPlay("ok"); //ラベルokへ(○表示) _global.count++; //←★付け加え } if(_global.seigo == 2){ //不正解の場合 _global.seigo =0; //判定初期化 this.gotoAndPlay("ng"); //ラベルngへ(×表示) _global.count++; //←★付け加え } } 次にその 「正誤判定」レイヤー フレーム2 以降にある MC である小さな○内の編集に入り 「action」レイヤー フレーム19 に書かれてあるスクリプトを 次のようにします。 if(_global.count == 10){ // ←★変更 gotoAndStop(38); //38フレームへ(得点表示 } else{ ranf = Math.floor(Math.random()*10+2); _root.gotoAndStop(ranf); gotoAndStop(1); } また 同じ「action」レイヤー フレーム19 に書かれてあるスクリプトを 次のようにします。 // ↓★if else 文に変更 if(_global.count == 10){ gotoAndStop(38); //38フレームへ(得点表示) } else{ ranf = Math.floor(Math.random()*10+2); _root.gotoAndStop(ranf); gotoAndStop(1); } ここまでで 試しに ムービープレビュー または パブリッシュ してみます。 すると, 『ランダムに問題を出題して、 1問10点の問題を10問解いた時点で終了。 そして終了時に得点を表示する。』 という仕様(ルール)に変わっていると思います。 あとは, この仕様(ルール)の最後の部分 『そして終了時に得点を表示する。』 の部分を 『そして得点に応じた絵柄を表示する。』 に変えれば良いということになります。 その『得点に応じた絵柄を表示する。』方法など様々です。 例えば 上で編集していた MC 内の 「最終」レイヤーに新しいキーフレーム(フレーム39)を追加して そのフレームのステージ上に 「50点以下で不合格!」というような文字や絵でも置き, 「最終」レイヤーに新しいキーフレーム(フレーム40)を追加して そのフレームのステージ上に 「70点以下でもう少し!」というような文字や絵でも置き, 「最終」レイヤーに新しいキーフレーム(フレーム41)を追加して そのフレームのステージ上に 「80点以上で合格!」というような文字や絵でも置きます。 ※参考【添付図】↓ そして, 「action」レイヤー フレーム38 のスクリプトを 次のように変更しても良いでしょう。 //stop(); // ←★削除 // ↓★以下を追加 if(_global.point <= 50){ gotoAndStop(39); } else if(_global.point <= 70){ gotoAndStop(40); } else { gotoAndStop(41); } 実際は 『得点に応じた絵柄を表示する。』方法など無数にあります。 自分自身でどのようなことをしたいかを考えて その通りになるようにスクリプトを組めば良いと思います。

txmaki
質問者

お礼

丁寧なご回答ありがとうございます! 説明がとてもわかりやすく、試してみて無事EDを分岐させることが出来ました。 この度は大変お世話になりました。

関連するQ&A