- 締切済み
Flash5で製作したゲームをFlashLite1.1用にしたい
現在、Flash8を使用してFlash Lite1.1でモバイル用のゲームを製作中なのですが、初心者の為パブリッシュバージョンがflash5のものを書き換えて製作しようとしている途中です。 パスやthisの書き換えは分かるのですが、onClipEventは使用できないようで、代わりがわかりません・・・。 以前の質問にもありましたが、私もこれをムービークリップに使用したいのですが、 Flash Lite1.1ではエラーになります。 以下どの部分をどのように変更したら良いのでしょうか? onClipEvent (load) { kaitouNum = 0; } onClipEvent (mouseUp) { if (kaitouNum != 0) { if (kaitouNum == _root.seikai) { kaitouNum = 0; this.gotoAndStop("maru"); _root.seikaiNum++; _root.play(); } else { kaisetu = _root["kaitou"+_root.seikai]; this.gotoAndStop("batu"); } } } ちなみにこの様なものです。 http://hfm-kenchan.com/Lesson/log_qa/D0601104.htm
- みんなの回答 (2)
- 専門家の回答
みんなの回答
#1です。 > 四択問題で解答ボタンが四つあり、 > そのボタンの中のひとつが正解って形の場合だと問題文も、 > 一問一問1フレーム毎に記述する事になりますか? それでできるのでしたら, そういう感じで1つ1つ一から作られる方が早道だと思います。 > 今はひとつのフレームに全ての問題文と > 正解ボタンが何番かを記載しています。 そして,そういう仕組みを後から考えれば良いと思います。 ======================================== どっちにしても, 結局,最初から考え直しになりますが, 一応, >> onClipEventは使用できないようで、代わりがわかりません・・・。 これだけについて回答しておきます。 また,ご質問で書かれているスクリプトだけでは,何のことかわかりません。 したかって,ご質問で書かれている URL にある, 「quiz4.fla」を書き換えるという形で回答します。 ※ しかし,onClipEventだけ直しても全く意味がありませんよ。 - - - - - - - - - - - - - - - - - - - - - - - - - まず,4つのボタンが入っている, ムービークリップ自体に書いてあるスクリプト ------------------------------------ onClipEvent (load) { kaitouNum = 0; } onClipEvent (mouseUp) { …省略… } ----------------------------------- を全て消します。 onClipEvent (load) {} は, 結局,ムービークリップ内のフレーム1に書いたことと同じ事になります。 onClipEvent (load) =ムービークリップが表示されたら ですから,そのムービークリップが表示されたら, ムービークリップ内 の フレーム1 が表示されます。 ですから, ムービークリップ内 「アクション」レイヤー フレーム1 は 次のようになります。 ------------------------------------ this.stop(); // ↓これを追加 kaitouNum = 0; ------------------------------------ onClipEvent (mouseUp) { } は, どこでもここでも良いから,マウスをアップしたときに実行されます。 つまり,ステージいっぱいの大きなボタンがあったとして, そのボタンに, on (release) { } を書いたのと同じ事になります。 しかし,ステージいっぱいの大きなボタンなんか必要ありませんから, onClipEvent (mouseUp) { } なんて本来必要ないのです。 ムービークリップ内のタイムラインを見ると, 4ボタンは フレーム1 とそれ以降が仕切られていますから, まず,この仕切を取って(フレーム2 のキーフレームを削除して) □ 解答ボタン 筆・・|●|●/////////[]| ↓ 変更 ↓ □ 解答ボタン 筆・・|● ///////////[]| そして, ムービークリップ内の4つのボタンを次のように書き換えれば良いだけです。 左上ボタン ------------------------------------ on (press) { kaitouNum = 1; } // ↓以下を追加 on (release) { if (kaitouNum != 0) { if (kaitouNum == _root.seikai) { kaitouNum = 0; this.gotoAndStop("maru"); _root.seikaiNum++; _root.play(); } else { kaisetu = _root["kaitou"+_root.seikai]; this.gotoAndStop("batu"); } } } ------------------------------------ 右上ボタン ------------------------------------ on (press) { kaitouNum = 2; } // ↓以下を追加 on (release) { if (kaitouNum != 0) { if (kaitouNum == _root.seikai) { kaitouNum = 0; this.gotoAndStop("maru"); _root.seikaiNum++; _root.play(); } else { kaisetu = _root["kaitou"+_root.seikai]; this.gotoAndStop("batu"); } } } ------------------------------------ 左下ボタン ------------------------------------ on (press) { kaitouNum = 3; } // ↓以下を追加 on (release) { if (kaitouNum != 0) { if (kaitouNum == _root.seikai) { kaitouNum = 0; this.gotoAndStop("maru"); _root.seikaiNum++; _root.play(); } else { kaisetu = _root["kaitou"+_root.seikai]; this.gotoAndStop("batu"); } } } ------------------------------------ 右下ボタン ------------------------------------ on (press) { kaitouNum = 4; } // ↓以下を追加 on (release) { if (kaitouNum != 0) { if (kaitouNum == _root.seikai) { kaitouNum = 0; this.gotoAndStop("maru"); _root.seikaiNum++; _root.play(); } else { kaisetu = _root["kaitou"+_root.seikai]; this.gotoAndStop("batu"); } } } ------------------------------------ 同じ事を書き続けていますから, 無駄なことをしていますね。 ですから, ムービークリップ内に決して行かないフレームを作成して, そこに on (release) { } 内の if文を書いて置いて, call関数 で call しても良いと思います。 その辺になってくると,ムービークリップの作成から説明しないとならなくなるので, 回答不能状態になります。 上のようにして, Flash 5 でパブリッシュしてもらうと,ちゃんと動作することが確認できると思いますが, Flash Lite までの道のりはまだまだ遠いですよ。 問題や解答データの用意の仕方やスクリプトもまだまだ変えなければなりません。 ですから, そういう "すでに出来た物" を作り替えるより,最初から考えた方が早いと思います。 "すでに出来た物" からは,それをしっかり理解して,その発想だけを盗めば良いのです。
なぜそういう妙に(必要以上に), 凝ったモノを参考にされているのかわかりませんが(Flash 5 でも普通はそんな変なことはしません。), 単純に, on (release) { } で,正解だったら次へ進んで, 間違いだったら,正解を表示するようにすれば良いのではないでしょうか? Flash Lite 以前に, なぜそんな変てこなことをしなければならないのか,イミフメイです。 正解ボタンには on (release) { gotoAndPlay(正解フレーム); } 間違いボタンには on (release) { gotoAndStop(間違いフレーム); } それだけのことだと思います。 書かれているそのままのことを, Flash Lite でもできなくはないと思いますが, スクリプト自体ではなく, 根本的にファイルの構造を変えないとならないため, ココでの説明(文字だけの説明)は前年ですが,無理だと思います。 せめて,FLA ファイルだけでもやりとりできれば, 説明も不用かもしれませんが, ココではそれもできませんので,"私は" すみませんが回答できませんね…。
お礼
回答いただき光栄です。 なんだかとても変なことをしていたんですね。 そして疑問が生まれてしまったのですが・・・ 正解の場合正解フレームへ飛んで、間違いの場合は間違いフレームに飛ぶような仕組みになる訳ですが、 四択問題で解答ボタンが四つあり、そのボタンの中のひとつが正解って形の場合だと問題文も、一問一問1フレーム毎に記述する事になりますか? 例えば、問題1の時は正解ボタンは2だけど、問題2の時は正解ボタンは3といった感じで問題毎に正解ボタンはバラバラです。 今はひとつのフレームに全ての問題文と正解ボタンが何番かを記載しています。 初心者な者でまた意味の分からない質問になっていたらすいません・・・。