- ベストアンサー
FLASHで性格判断テストを作りたいのですが・・・
↓この様な性格判断テストを作ろうと思っていますが、Yesをクリックした数を最後に合計して診断結果を表示するには、どうすれば良いのでしょうか? ・いくつか質問画面を用意し、それぞれの画面に「Yes」と「No」のボタンを配置 ・順に質問画面を表示して行き、最後に「Yes」のをクリックした数に従って診断結果を表示する ヨロシクお願いしますm(_ _)m
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1の方の書かれている方法で良いと思います。 ですから,別案ではなく,似たような具体例を回答します。 ------あくまでも例ですよ----------- 問題が5問あったとします。 その場合,Flash のタイムラインのフレーム数を 7フレーム にします。 なぜ7にするかというと, 「スタート」のフレーム,問題の5フレーム,最後の結果表示フレーム 1+5+1=7 だからです。 レイヤーはいくつ作られてもかまいませんが, この例では,3レイヤーにしておきます。 □ レイヤー 筆・・・|○ []|←スクリプト □ レイヤー 筆・・・|○ []|←ボタン □ レイヤー 筆・・・|○ []|←質問画面 「スタート」のフレーム,問題の5フレーム,最後の結果表示フレーム, それぞれ1フレームずつを作ったとします。 ボタンは初めに「スタート」ボタン, 2~6フレームが「Yes」と「No」ボタンの合計3つのボタンを作ったとします。 「Yes」と「No」ボタンは同じレイヤーに置いて共有させると作るのが楽です。 また,ボタンはシンボルに変換するときボタンシンボルに変換してください。 □ レイヤー 筆・・・|○ []|○|←スクリプト □ レイヤー 筆・・・|●|●////////[]|○|←ボタン □ レイヤー 筆・・・|●|●|●|●|●|●|●|←質問画面 質問画面の最後の7フレーム目には, ↑ ダイナミックテキストを用意して, 複数行表示されるように,ドラッグして広げて置いて, そのダイナミックテキストを選択した状態で, 下のプロパティインスペクタで "変数名" を付けてください。 インスタンス名ではないです。変数名です。 この説明では,「sindan」という変数名にしておきます。 また, このダイナミックテキストは 「単一行」,「折り返しなし」,「複数行」が設定出来ますが, 「複数行」の設定してください。 さらに, このダイナミックテキストの文字色は, 背景と違う色にしてください。 背景と同じ色だと表示されても見えません(当たり前)。 またさらに, スクリプトは フレーム1 と フレーム7 に書きますから, フレーム7 のスクリプトを書くフレームをキーフレームにしておいてください。 そしてスクリプトです。 フレーム1のスクリプトに次のように書きます(コピペ可能)。 -------------------------- // ストップ stop(); // 変数 touten の値を 0 にする var tokuten = 0; -------------------------- 同じくフレーム1の「スタート」ボタン -------------------------- on (release) { // 次のフレームへ nextFrame(); } -------------------------- 2~6フレーム目の「No」ボタン -------------------------- on (release) { // 次のフレームへ nextFrame(); } -------------------------- 2~6フレーム目の「Yes」ボタン ------------------------- on (release) { // 変数 tokuten に 20 を加算する tokuten += 20; // そして次のフレームへ nextFrame(); } ------------------------- 最後,フレーム7の ------------------------- // もし tokuten が 0 であれば if (tokuten == 0) { // 変数 sindan の値を " " 内の文字列の値にする sindan = "得点は0点\nあなたは極悪人です。"; // もし tokuten が 20 であれば } else if (tokuten == 20) { // 変数 sindan の値を " " 内の文字列の値にする sindan = "得点は20点\nあなたは悪人です。"; // 以下同じようなこと } else if (tokuten == 40) { sindan = "得点は40点\nあなたは小悪魔です。(意味違う?)"; } else if (tokuten == 60) { sindan = "得点は60点\nあなたは善人です。"; } else if (tokuten == 80) { sindan = "得点は0点\nあなたは超善人です。"; } else if (tokuten == 0) { sindan = "得点は0点\nあなたは極超善人です。"; } ------------------------- 「\n」は改行コードです。 得点(tokuten)を最初から最後まで表示したい場合は, レイヤーをもう1つ追加して, 「tokuten」という変数名の付いたダイナミックテキストを用意しておくと, tokutenが増える様子がわかります。 □ レイヤー 筆・・・|○ []|○|←スクリプト □ レイヤー 筆・・・|○|●////////// []|←tokuten □ レイヤー 筆・・・|●|●////////[]|○|←ボタン □ レイヤー 筆・・・|●|●|●|●|●|●|●|←質問画面 なるべく,図のようなものを入れましたが, やはり文字ばかりだとわかりにくいでしょう。 図説がたくさんある本を参考に, たとえ上のようなサンプルがなくても, その本に書かれている部品的なスクリプトや仕組みを組み合わせて, 自分で考えて作る方が,早い気がします。 こういう基本的なことの組み合わせで,図説をしなければならないようなことは, なるべく本を参考にしてください。 それの方がわかりやすいと思います。 あと,大切なのは Flash のバージョンです。 書かれていないので,Flash 5 以上で出来る方法で回答しました。 Flash はバージョンによって,対処やスクリプトが変わります。 今後質問される場合や,補足される場合は,Flash のバージョンを書いてください。
その他の回答 (1)
- JackB
- ベストアンサー率33% (107/320)
変数を設定して、yesボタンが押されたらその変数に1ずつ加算されるようにする。 そして最後の結果は変数の数値によって表示されるものが変化されるように作る。 例えば 「yesが1個なら○○へ」 「yesが4個なら××へ」というような スクリプトを書いてあげればいいのです。 何処に飛ぶかは複数の結果場面だけを内包したムービークリップを作って、 その中でラベル分けして、そのラベルを指定すればいいでしょう (まあこれはあくまでも一例ですが)。
お礼
有難うございました。 変数を使ったスクリプトが苦手で・・・;
お礼
詳細にありがとうございました。 しかもこんなに御礼が遅くなってしまい、大変失礼しました。 FlashのバージョンはMX2004です。 本も何冊か買ったのですが、書いてあることとちょっと違うことをしようとするとどこを変えればよいのかさっぱりわからず・・・と言った状態です。 これからも勉強続けて行きます。