- ベストアンサー
プルダウンメニューを作ろうとしているのですが…
フラッシュ初心者です。 プルダウンメニューを作ろうとしています。 on(rollOver){ play(); } のスクリプトでマウスオーバーでモーショントゥイーンによって拡大するようにした四角いMCの上にボタンインスタンスを設置したのですが、MCすべてがon(rollOver)の選択範囲になってしまいボタンインスタンスが反応しません。 何か方法はないでしょうか? どなたか知恵を貸してください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Flash のプルダウンメニューは, 作っていない人から見ると簡単そうに見えるのかもしれませんが, 実際に作ってみると難しいですよね。 でも, ものすごいバリエーションのプルダウンメニューがつくれて, 難しい分,すごく面白いものだと思います。 書かれている雰囲気から考えますと, on(rollOver){ play(); } を書かれたムービークリップに, on(rollOver){~} を書くのではなく, 次のようなスクリプトに変更すると, 後も作りやすくなると思います(コピペ可能)↓。 ------------------------------------- // このMC(ムービークリップ)が表示されたとき onClipEvent (load) { // フレーム1でストップ this.stop(); } // // 1フレーム進む時間ごとに毎回実行 onClipEvent (enterFrame) { // もしこのMCとマウスがヒットしていたら if (this.hitTest(_root._xmouse, _root._ymouse, true)) { // なおかつ 最終フレームでなければ if (this._currentframe<this._totalframes) { // このMCを再生 this.play(); } else { // 最終フレームではストップ this.stop(); } } else { // このMCとマウスがヒットしていなければフレーム1へ戻る this.gotoAndStop(1); } } ------------------------------------- こんな↑感じでいかがでしょうか。 または,次↓の部分を, } else { // このMCとマウスがヒットしていなければフレーム1へ戻る this.gotoAndStop(1); } このように↓変えても面白いかもしれません。 } else { // このMCとマウスがヒットしていなければ前のフレームに戻る this.prevFrame(); } 別法としては, ムービークリップ自体に on(rollOver){~} を書いておいて, そのムービークリップ中にあるボタンをムービークリップで作成し, 逆に, そのボタンムービークリップとマウスとの当たり判定(hitTest)を取る方法もありますが, それだと, ボタンが「オーバーフレーム」や「ダウンフレーム」に自動では進まなくなって, 構造自体が複雑になります。 ですから上記のように, 複数のボタンが入ったムービークリップ自体とマウスの当たり判定をする方が楽だと思います。 プルダウンメニューは, 基本的には質問者さまのように,最初から自分で考えるべきもので, 考えれば考えるほど,自分らしく面白いものができます。 しかし, 最初から自分で考えていて発想に詰まったときは, 他の方の既存のアイデアを参考にするのも良いと思いますよ。 少し前に,私が回答したものですが↓。 「flashのメニュー作成について」 http://oshiete1.goo.ne.jp/qa2868472.html ↑教えて!goo ↓OKWave (同じです) http://okwave.jp/qa2868472.html この回答のスクリプトは, 上記の回答の参考URLにもある, 「Chapter11 メニュー・フォーム」 http://book.mycom.co.jp/support/e5/actionscript10/contents.html#ch11 の,「11-01 ロールオーバーでプルダウンメニューを表示」 のサンプルのアイデアを参考に, ご質問の場合に近いようなものではどうすべきかを考えてみたものです。 もし,他のものも見てもらうとわかりますが, スクリプトやムービーの構造は十人十色です。 ここ(このコミュニティ)のような, 文字ばかりでしか説明できない場所では, 絶対に説明しきれないようなものすごい複雑なものもあります。 ほんの少し,アイデアだけを盗んだりしながら, ぜひとも面白いプルダウンメニューを作成してください。 また, 最初にプルダウンするボタンにマウスを持っていったら, ダラーっとメニューが垂れさがるようなHTML的プルダウンメニューにこだわる必要も普通はないと思いますから, 最初にプルダウンするボタンにマウスを持っていったら, フワーッと日本地図が浮かびあがって, 「東京」をクリックしたら東京に関するページにジャンプしたり, となりのボタンにマウスを持っていったら, 回転しながら韓国の地図が出てきて, 「釜山」をクリックする釜山説明フレームにジャンプするようなものを作成しても,Flashらしくて面白いと思います。 (↑作成 "しても" 面白いかもしれないというだけで, 作成 "した方が" 面白いという意味ではありませんよ。) メニューデータのデータ自体が動的に変化するようなものでしたら, 簡易的に,Flash コンポーネント の UI ComboBox や UI Menu(Flash Professional 8 及び MX Professional 2004限定) を使う方法もあると言えばありますが, メニューのデータ内容自体が動的に変化しないものであれば, UI ComboBox や UI Menu というようなつまらないものを使うより, ご質問されているように自作した方がずっと良いです。 つまらない Flash のサイトでは, この UI ComboBox (Flash 5 では,スマートクリップ の 「MENU」 に当たる物)が無意味に使われているのもよく見ますが, ああいう発想の乏しいものを使いだすと,Flash 全体もつまらないものになるので, できるだけ使わない方が良いと私は思います。 と言うか, 作成者の発想が乏しくてつまらないものしか作れないから, ああいうものを無意味に使うのでしょうね ( \(-.-メ) 悪態吐きすぎ... )。
お礼
ご回答本当にありがとうございます。 お蔭様で希望する物が作れました。Flashにも大分慣れてきたので、ご回答を参考にもっと面白い物を作ってみたいと思います。 this.prevFrame();が私の希望にピッタリでした。 ありがとうございました!