FLASHでドロップダウンメニュー(ParaFla使用)を作成する方法

このQ&Aのポイント
  • FLASHを使用してParaFlaを使ったドロップダウンメニューを作成する方法についてご質問です。
  • 作成中のメニューでは、大きなメニューをクリックすると画像が変化し、小さいメニューが表示される仕組みです。
  • 現在の状況では、子メニューが展開されずに大きくならないため、正しく動作しないようです。アドバイスをいただけると助かります。
回答を見る
  • ベストアンサー

FLASHでドロップダウンメニュー(ParaFla使用)を作成しているのですが、うまくいきません。

ParaFlaを使用してドロップダウンメニューを作成しようとしているのですがうまく動作させられません。 ご教示いただきたく思い質問させていただきます。 下のサイトのようなメニューを目指しています。 http://www.hack.channel.or.jp/ まず、大きなメニュー(上のサイトで言うとNews・The Worldなど)があって それに触れると画像が変化し、小さいメニュー(The Worldとは?・時代設定など)が表示され、 その小さいメニューに触れると大きくなって、クリックでURLを取得。 というものです。(説明下手ですみません) 実際に作ってみている物は (1)ルートにスプライトAを置き、クリップアクションに on(rollOver){gotoAndPlay("over");} - on(rollOut,ReleaseOutside){gotoAndPlay("out");} を記入。 (2)スプライトAにover・outラベル設定して 大メニューに触れたら子メニューが開くようにできました。 (3)しかし、そのままでは子メニューの「触れたら滑らかに大きく」を実行できないので、子メニュー1つ1つをスプライトに置き換え、 on(rollOver){gotoAndPlay("over2");} - on(rollOut,ReleaseOutside){gotoAndPlay("out2");} - on(Release){gotoAndPlay("release2");} とクリップアクション記入。 (4)そしてそのスプライトにover・out・releaseラベルを設定して overで大きくなるように、releaseでURLを取得 としました。 多少の不安もありましたがルートにてプレビューしてみると、大メニューoverで子メニュー展開まではできていたのですが、 子メニューに触れても大きくならないしURLも取得できませんでした。 以上が現在の状況です。 間違っている場所があれば指摘をしていただきたいです。 他の方法があれば知恵をお貸しくださいm(_ _)m 分かりにくい文章ですみません。よろしくお願いします。

  • Flash
  • 回答数1
  • ありがとう数2

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

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

ここではサンプルなどを提示できませんし, 提示できたとしても私には ParaFla! でサンプルを作成する能力もありませんからヒントだけのようなものです。 ボタン機能( on(rollOver){} などの on(○○){} )が上下に重なると, 下のボタン機能( on(○○){} )は機能しません。 Flashの仕様です。 このことは便利にはたらくことが多いです。 しかし, たまにはご質問されているように邪魔になる場合もあります。 スプライトを親子の入れ子にして, 親スプライトにも on(○○){} を書いて, 子スプライトにも on(○○){} を書いた場合, 親スプライトの on(○○){} が優先されます。 スプライトは入れ物なので, 外側(親側)の入れ物ほど優先されます。 on(○○){} が上下に重なった場合と同じことになります。 したがって, > 子メニューに触れても大きくならないし > URLも取得できませんでした。 という状態になります。 目指していらっしゃるご質問のサイトのメニューを よーーーく,観察してみてください。 観察するポイントは "カーソルの形" です。 最初に表示されている縦にならんだ親ボタン(スプライト)にカーソルを乗せたとき, ハンドカーソル(指カーソル)に変わりません。 これは何を意味しているのかというと, このスプライトには on(○○){} を設定していないということです。 その後に出てくる子ボタン(スプライト)にカーソルを乗せたときは, ハンドカーソル(指カーソル)に変わります。 これは何を意味しているのかと言うと, ボタンに設定したインスタンスであるか, もしくは on(○○){} を設定したスプライトということになります。 ですから, 親スプライトにカーソルを乗せたり放したりするのを, on(○○){} で検知して動作させるのではなく, 親スプライトとカーソルとが接触したかどうかを判断させて, 親スプライトとカーソルとが接触していたなら, そのスプライトを gotoAndStop(○○) させるような仕組みが必要となります。 一般的にはこれには hitTest を使います。 FN0308001 onハンドラを使わずにロールオーバー-ロールアウトを検出する http://www.fumiononaka.com/TechNotes/Flash/FN0308001.html Flashゲーム講座&ASサンプル集【当たり判定について】  →点とインスタンスとで当たり判定を取る http://hakuhin.hp.infoseek.co.jp/main/as/hittest.html#HITTEST_00 以上, > 子メニューに触れても大きくならないし > URLも取得できませんでした。 に関して,そうなる理由と,対処法のヒントだけという回答です。

rajaeaeeae
質問者

お礼

ありがとうございます。おかげで無事に作成できました! 何故駄目なのかが理解でき、参考URLで hittest を(少しですが)学ぶことができました。 ありがとうございました(_ _)

関連するQ&A

  • マウスポインタを変化させない方法

    50も半ば過ぎの初心者です。 Flash8で、jpg画像の上にムービークリップ及びボタンを配置、   on (rollOver) { gotoAndPlay("s1"); } on (releaseOutside, rollOut) { gotoAndPlay("s2"); } で、画像へのマウスポインタの乗り降りでムービークリップの制御をしました。 このとき、画像にマウスポインタが乗ると形状がデフォルトの"矢印"から"手"に変りますが、これをデフォルトのまま変化させない方法を教えてください。 on (rollOver) { Mouse.hide(); gotoAndPlay("s1"); } on (releaseOutside, rollOut) { Mouse.show(); gotoAndPlay("s2"); } で、画像にマウスポインタが乗ると消えるようにはできたのですが、クリックしても何も起こらない"ボタン"なので、"矢印"のままにしておきたいのです。 よろしくご指導ください。

    • ベストアンサー
    • Flash
  • Flash CS4でリンクボタンを作成中です。

    Flash CS4でリンクボタンを作成中です。 初心者で、スクリプトの意味がまだ良く分かっておらず、参考書記載の通りにアクションを書いたのですが、「コンパイルエラー」が表示され、指定したページへリンクされません。 アクションスプリクト及びコンパイルエラーは以下の通りです。 どこが悪いのか全然分かりません。どなたか至急ご教授宜しくお願いします。 ★アクションスクリプト 1  on (rollOver) { 2  this.gotoAndPlay("ON"); 3  } 4 5  on (rollOut) { 6  this.gotoAndPlay("OFF"); 7  } 8 9  on (release) { 10 getURL("http://www.~/"); 11 } ★コンパイルエラー 1087 シンタックスエラー(プログラムの末尾の後に余分な文字が見つかりました。) on (rollOver) { 以上、宜しくお願いします。

    • ベストアンサー
    • Flash
  • FLASHのボタンの動作(他のボタンにロールオーバーしたら…)

    AというボタンとBというボタンがあります。 Aには on (rollover) { this.gotoAndPlay(2); } on(rollout){ this.gotoandplay(6); } というアクションがついていますが、 「rollout」ではなくて、「Bのボタンにrolloverしたら」というように変えたいのですが、 どのように記述したらよろしいでしょうか? よろしくお願いします。

  • [Flash]スクロールメニューのボタンからフレームに移動したいのですが

    Flashほぼ初心者です。 FLASH FACTORYという本を参考に、FlashでPhotoギャラリーを作ろうとしています。 この本の2-6の項目を参考にしているのですが、 メニューのボタンを押しても、フレームに移動することが出来ません。 getURLをthis.gotoAndPlayに変えただけなのですが、だめです。 どなたか、アドバイスお願い致します。 【変更前】 on (press) { _parent.drag = 1; _parent.startY = _root._ymouse; _parent.startSlideY = _parent._y; } on (release, releaseOutside) { _parent.drag = 0; _parent.endY = _root._ymouse; if ((_parent.startY == _parent.endY) && (url != null)) { getURL(url); } } 【変更後】 on (press) { _parent.drag = 1; _parent.startY = _root._ymouse; _parent.startSlideY = _parent._y; } on (release, releaseOutside) { _parent.drag = 0; _parent.endY = _root._ymouse; if ((_parent.startY == _parent.endY) && (url != null)) { this.gotoAndPlay(url); } }

    • ベストアンサー
    • Flash
  • gotoAndPlay gotoAndStopについて

    こんばんは。flash初心者なので恥ずかしい質問なのですが、少々困っているので先人のお知恵を拝借させて下さい。 Flashメニューを作成しています。 _root.middle.button1_1という場所のアクションです。 on(rollOver) {   _root.middle.button1_1.gotoAndPlay("over");   _root.bottom.gotoAndStop("1_1"); } on(rollOut) {   _root.middle.button1_1.gotoAndPlay("out");   _root.bottom.gotoAndStop("rollout"); } 【マウスを被せた時】 button1_1というインスタンスをoverから再生させ、 同時に、_rootにあるbottomというインスタンスを1_1というフレームで停止。 【マウスを離した時】 button1_1というインスタンスをoutから再生させ、 同時に、_rootにあるbottomというインスタンスをrolloutというフレームで停止。 困っているのは、同じ書き方で動いたり動かなかったりするのです。 _root.middle.button1_1.gotoAndPlay("over"); で動いたと思っていたら、突然動作しなくなるので、 gotoAndPlay("_root.middle.button1_1","over");に書き換えると動作するのです。しばらく作業をしていると、今度は逆の状態になったりします。 これはどうした事でしょう?そもそもインスタンス名にアンダーバーを使用するのはまずかったりしますか? OSはWindows XP 作成ソフトがFreeMotion バージョンがFlash7です。 情報お待ちしています。

    • ベストアンサー
    • Flash
  • ラジオボックスを使ったFLASH 変数の受け渡しについて

    FLASH5で、スマートクリップのラジオボタンを使いまして選択型の変数の値をCGIにうけわたしたいのですが、うまくゆかず、悩んでおります。 ・ラジオボタンと、送信ボタンを準備しました。 ・ラジオボタンの_name を それぞれr_01、r_02、r_03とし、チェックが入ったときに、変数icon="a" "b" "c"が入るようにしたい 送信ボタンに on (release) {      if(r_01 == true) { icon = "a";}      if(r_02 == true) { icon = "b";}      if(r_03 == true) { icon = "c";} } on (release) { mode = "write"; resid = resid; getURL (script, "_self", "POST"); } on (rollOver) { tellTarget ("write") { gotoAndPlay ("over"); } } on (rollOut) { tellTarget ("write") { gotoAndPlay ("out"); } } on (press) { tellTarget ("write") { gotoAndPlay ("press"); } } アクションスクリプトはかじりたてで、初歩的なミスがあるかと思います。どなたか教えていただければ幸いです。

  • ステージ外へカーソルが出た事を感知させるには

    宜しくお願いします。 FlashMX2004 MacOS:tiger AS1.0 Player6 ステージサイズ100x100ピクセルの上に、80x80ピクセルのMCが配置してあります。 上下左右に10ピクセルの余白がある状態です。 カーソルがステージ外へ出た事を感知したいのですが、カーソルを素早く動かすと、rollOutを感知してくれません。 MCには以下のscriptが書いてあります。 on(rollOver){ trace("over"); } on(rollOut, releaseOutside, dragOut) { trace("out"); } 宜しくお願いします。

  • 縦のメニューバー作成方法で困っています。Part2

    今、縦のメニューを作成しています。 横長のボタンが8項目ありマウスがrolloverするとある座標まで移動するというようなものです。 作り方から言えば、まず座標の元となる物体をフィールド外で2つ作成し、実際にボタンにマウスがrolloverするとそのフィールド外の物体の座標まで移動し、マウスがrolloutすると横長ボタンがもう一つの物体の座標までもどる。といった風につくっています。 ここで質問なんですが、実は幕以外に8項目のボタンの下にボタンが選ばれるごとにコメントが表示するようにしたいのですが、自分でやってみたのですがいいように出来ません。 僕が、やってみた方法は、ボタンに_root.gotoandPlay(2)というscriptを書いて横から幕を登場させているので、そのまま2フレーム目にムービークリップ(アルファ0から表れる幕)を作成し幕があらわれるまでは出来たのですが、そこからアルファ0%になるように消したいのですがここの消し方がわかりません。 ちなみに、横長ボタンをシーン1でムービークリップで作成し、その中でボタンにしています。その為、ボタンのオーバー、ダウンを使っても一緒に横にスライドしてメッセージが見えなくなります。 説明が長ったらしくわかりにくいとおもいますが宜しくお願いします。

    • ベストアンサー
    • Flash
  • ボタンの中にボタンを作るには?

    ボタンの中にボタンを入れたいのですが、中にボタンを入れると一番外のボタンに命令していたスクリプトがいうことを聞かなくなってしまいます。ちなみに外のボタンには on(rollOver){ gotoAndPlay(フレーム); } on(rollOut){ gotoAndPlay(1); そして10フレームほどトゥイーンがあり、10フレーム後のボタンには } on(rollOver){ gotoAndStop(10フレーム後); } on(rollOut){ gotoAndPlay(1); } と書いています。このボタンは、あるボタンを押すと出てくるようになっています。このボタンの中に文字でボタンを入れたく、また、見え方も外のフレームと一緒にしたいです。 わかりづらい説明で申し訳ないのですが、よろしくお願いいたします。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • アニメーションするナビゲーションを作りたい

    http://toyota.jp/ このTOPページの様にナビゲーションに触るとアニメーションし、離すとアニメーションして、さらにアニメーションしながらコンテンツが出てきて、離すとまたアニメーションしながら閉じるというナビゲーションを作りたいです。各ボタンをムービークリップに変換して on(rollOver){ this.play(); } on(rollOut){ this.gotoAndPlay("end"); } on(release){ getURL("ファイル名.html"); } をオブジェクトに入れるまではわかったのですが。アニメーションしながら出てくるコンテンツの方はどうすればいいかわかりません。 FLASHのいろいろなサイトや本で同じ事をやっているものを探しましたが、同じものは見つかりませんでした。よくあるナビゲーションだけに誰か作ったことのある方はおられないでしょうか。お教え下さい。