• 締切済み

マウスオーバー時のボタンの重なりを防ぐ

あまりflashについてわかっておりません。。。 四角いボタンが平行に3つ並んでいて、各々、マウスオーバー時には、130%くらい拡大した大きさで四角を表示。(選ばれていない四角は、そのままの大きさで表示)クリック時には、各々リンクを張ってあるURLへとぶ。といったものを作りたいのですが、どのようにして、ボタンを作ればよいのでしょうか。 アップ時の3つ並んだ状態を、全てのボタンアップ時に設定し、オーバー時のみ、各々を拡大したものを設定してみたのですが、試してみると、重なりあってうまく表示されません。

みんなの回答

noname#35109
noname#35109
回答No.2

しばらく,何を言われているのかよく理解できませんでした。 平面に3つの物がひっついて並んでいて,1つが大きくなったら他のに重なるに決まっている… 重ならないというのは,どういうことなんだろう? Flash以前の問題ではないのかな?  と言う感じでよくわかりませんでした。 でも,しばらく考えているとなんとなくわかってきました。 Flashに限らず,HP上ではあまりしないことをされようとしているのですね。 マウスオーバーで大きくなるボタンは普通は他の物と間を空けますから。 これが何もしていない状態で,  ┌───┬───┬───┐  │ボタンA│ボタンB│ボタンC│  └───┴───┴───┘ ボタンAを拡大したときにボタンBとCを移動させて重なりを回避したい。    そのまま   移動→  移動→ ┌─────┬───┬───┐ │←ボタンA→│ボタンB│ボタンC│ └─────┴───┴───┘  ←移動   そのまま    移動→ ┌───┬─────┬───┐ │ボタンA│←ボタンB→│ボタンC│ └───┴─────┴───┘  ←移動  ←移動  そのまま ┌───┬───┬─────┐ │ボタンA│ボタンB│←ボタンC→│ └───┴───┴─────┘ ↑こんな感じのことをしようとされているのですね。 もしそうだったら,各ボタンのrollOver時などで,他のボタンをスクリプトなどで移動させなければなりません。 例ですが,以下のようなスクリプトで,上の図のようなことはできます。 まず,それぞれのボタンに「インスタンス名」を付けてください。 ボタンを選択し,下のプロパティパネルから,左の方にある <インスタンス名> となっているところを書き換えます。 例では左から「buttonA」,「buttonB」,「buttonC」というインスタンス名にしました。 インスタンス名を付けたあと, 1フレーム目などのフレームアクションとして, idoukyori = 12 と書いておきます。 「idoukyori (移動距離)」は今勝手に決めた変数名で,後で「12」の部分を調節してください。 buttonAのスクリプトとしては以下のように書きます。 ----------------------------------- on (rollOver) { _root.buttonB._x += idoukyori; _root.buttonC._x += idoukyori; } on (press) { _root.buttonB._x -= idoukyori; _root.buttonC._x -= idoukyori; } on (release) { //**ココに動作するスクリプトを書く** _root.buttonB._x += idoukyori; _root.buttonC._x += idoukyori; } on (rollOut) { _root.buttonB._x -= idoukyori; _root.buttonC._x -= idoukyori; } ----------------------------------- buttonBのスクリプトとしては以下のように書きます。 ----------------------------------- on (rollOver) { _root.buttonA._x -= idoukyori; _root.buttonC._x += idoukyori; } on (press) { _root.buttonA._x += idoukyori; _root.buttonC._x -= idoukyori; } on (release) { //**ココに動作するスクリプトを書く** _root.buttonA._x -= idoukyori; _root.buttonC._x += idoukyori; } on (rollOut) { _root.buttonA._x += idoukyori; _root.buttonC._x -= idoukyori; } ----------------------------------- buttonCのスクリプトとしては以下のように書きます。 ----------------------------------- on (rollOver) { _root.buttonA._x -= idoukyori; _root.buttonB._x -= idoukyori; } on (press) { _root.buttonA._x += idoukyori; _root.buttonB._x += idoukyori; } on (release) { //**ココに動作するスクリプトを書く** _root.buttonA._x -= idoukyori; _root.buttonB._x -= idoukyori; } on (rollOut) { _root.buttonA._x += idoukyori; _root.buttonB._x += idoukyori; } ----------------------------------- 要は「rollOver」とか「rollOut」とかのとき,自分以外のボタンを,idoukyori分,右や左に動かしているのです。 idoukyoriは,書かれたボタンの大きさや,拡大率によってかわってくるので適当に変えてください。 また,idoukyoriを変数として用意せず, _root.buttonA._x -= 10; _root.buttonB._x -= 15; という感じで数字を直接書いても良いです。

yanpu
質問者

お礼

お返事が遅くなって申し訳ありません。御丁寧かつわかりやすい御説明、本当にありがとうございました!!とても嬉しいです。flashがわからないので、質問自体、経験者の方からすると意味が解りにくかったと思います。でも、ご理解頂けたその通りのことを求めていました!!ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • datemaki
  • ベストアンサー率68% (92/134)
回答No.1

ロールオーバーした方のボタンが常に最前面に来るようにするということですか? だとすればアクションスクリプトの 「swapDepths();(flash5以降対応)」を使ってオブジェクトの深度を変え、重なり順を変えてみるといいかも知れません。 深度というのは言葉通り深さであり、flashではオブジェクトを作った場合、自動的に-16383という数値から上に重ねて行きます、って私もそんなに詳しくないのですが(^^; とりあえず私が前に作った方法だと、まず、ボタンを作るのではなく、ムービークリップを作って、それをボタンと同じ機能を持たせる方法をとってます。(当方環境がMacXのflashMXなので、もしかしたら操作に若干違いが出るかも知れませんがご了承ください。) 例えば まず四角を一つ描き、それをムービークリップに変換します。仮に「A」としますね。 このムービークリップAを選択した状態でアクションパネルを開き、アクションを記述します。 on (release) { getURL("httpxxx~"); } と。これで「Aをクリックしたら『httpxxx~』というURLにジャンプする」という命令がなされます。この時点でAはボタンとして機能するはずです。ムービープレビューしてAをクリックすると指定したURLに飛ぶはずです。 次にムービークリックAをダブルクリックしてオブジェクトの編集画面に移ります。キーフレームを二つ作り、フレームの一番目には通常の大きさの四角をそのままに、二番目のフレームには130%の大きさの四角、つまり一番目が何もしない場合のボタンのイメージ、二番目がロールオーバーした際のイメージですね。そしてアクションを記述する為のレイヤーを新規します。このレイヤーもキーフレームを二つ作り、一番目のフレームを選択してアクションパネルを開き、 stop(); init(); this.onRollOver = function() { this.swapDepths(++_global.depth); gotoAndPlay(2); }; this.onRollOut=function(){ gotoAndPlay(1); }; と、記述します。意味としては 「止まれ(止めないと次のフレームに行ってしまいます) カーソルがこの四角の上にあるとき(ロールオーバー時) この四角の深度を『最前面』にして 2番目のフレームに進む。 カーソルがこの四角の上にないとき(ロールアウト時) 1番目のフレームに進む。」 と言うような感じでしょうか。 次にアクション記述用のレイヤーのフレーム二番目を選択してアクションパネルを開き stop(); と記述します。そうしないとフレームの一番目に戻ってしまいます。 これでボタン「A」の完成ですね(w 同じ行程を二回繰り返して「B」「C」を作り並べてプレビューしてみてください。 ロールオーバーしたボタンが最前面の状態で130%の大きさになるはずです。 以上。ちょっと分かりづらいですかね(’’; 長文の上、もし的外れの回答でしたらすいません。

yanpu
質問者

お礼

とてもわかりやすかったです。ありがとうございます。理解しずらい質問に、適格、丁寧に対応して下さって、本当に嬉しいです。flash初心者なので、アクションスクリプトに慣れておらず、困っていましたので、助かりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Flashマウスオーバー

    Flashで、ループが一回の小さなムービーを流し、 その上にマウスを合わせると(クリックではなくオーバーのみ)、別の絵が表示されてストップし、またマウスを外すと元のムービーがはじめから流れるものを造りたいのですが、ボタンシンボルで造ると、マウスを外してもムービーが最初からは始まりません。 ボタンシンボルを使わずにon(release)のような記述で、クリックではなくマウスオーバー時に反応させるにはどうしたらよいのでしょうか? 良いアドバイスがあれば教えてください。 宜しくお願いします。

  • Flash:ボタンのサウンド(マウスオーバー時)設定について

    Flashのみでホームページを制作中なのですが、そこで一つ問題が生じてしまいました。 考えてもなかなか解決しません。どなたか教えてください。 メニューボタンが3つと、それを押すと各々3つのページ(3シーンに分けてあります)にジャンプするように作ってあります。 ボタンはどのページでも常に同じ位置にあります。 このボタンのマウスオーバーのフレームのみに「ボワ~ン」というサウンドをいれました。 マウスカーソルを3つのボタン上でなでるようにすると「ボワ~ンボワ~ンボワ~ン!」となる感じです。 サウンドに関してはそれだけでよかったのですが、ここからが分からなくなりました。 ボタンをクリックすると、希望のシーンにジャンプします。 それでも見た目上は、メニューボタン部分にはまったく変化がありません。 なのに、構造的にはシーンのジャンプが行われているわけで、 そうすると、ボタンをクリックしたまま、そのボタン上でマウスを動かさない状態でいると、 新しいページになった瞬間に、もう一度「ボワ~ン」と鳴ってしまうのです。 これを回避する方法をご存じの方、いらっしゃいませんか? 基本的にボタンのマウスオーバーフレームにサウンドを割り当てたのが、いけないのでしょうか? アクションスクリプトのオブジェクト用のもので、なにか使えるものはないでしょうか? たとえば、「オンマウスオーバー」の設定かなにかで、指定の範囲外から範囲内へのアクセスのみに反応して、 マウスカーソルがもともと範囲内に会った場合には無反応、といったようなアクションをご存じの方いませんか? よろしくお願いします!

  • FLASHでのアニメーションボタン作成について

    こんばんは。 まだFLASH CS4を触り始めの初心者です。 現在FLASHでサイト製作をしており、ボタンを作成していますが、 マウスダウン時のアニメーションでつまずいています。 マウスアップ時のアニメーションのMC(btn_up)、 マウスオーバー時のアニメーションのMC(btn_over)をそれぞれ作成し、 ボタンインスタンスの「アップ」「オーバー」にそれぞれ割り当てています。 アップ時にはbtn_upのインスタンスが動き、 マウスオーバー時にはbtn_overが動きますが、 マウスダウン時にはボタンが一瞬真っ白になり、 マウスクリックを離すと再びbtn_overが動作します。 ダウン時の指定をしていないので、上記の動きは理解できるのですが、 他のFLASHサイトのアニメーションボタンを触ってみても、 マウスダウン時に画面が白くなることはありません。 再現したい内容として、マウスオーバー時にループして動いている アニメーションをクリックしても、マウスオーバー時のアニメーションが 止まらずに動き続けるというアニメーションにしたいので、 ボタンインスタンスのダウンにマウスオーバー時のインスタンスを 割り当ててみましたが、そうするとマウスダウンした際に アニメーションが最初から再生されてしまいます。 また、ボタンインスタンスでは、「マウスオーバー時にタイムラインの 何番フレームに移動する」という制御ができないようなので、 ActionScriptを使ってボタンと同様の制御をしようと思い、 addEventListenerでそれぞれオーバー、ダウン時の設定をしましたが、 マウスオーバー時にマウスのカーソルがリンクとして認識しません (矢印のカーソルから指のカーソルにならない)。 ターゲットをリンクとして認識させる為のASの記述はあるのでしょうか? 長文となってしまい恐縮です。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • Chromeについて質問です。マウスオーバー時にリンク先を完全表示した

    Chromeについて質問です。マウスオーバー時にリンク先を完全表示したいです。 画像のように、Google Chromeでリンク文字をマウスオーバーしたとき、画面左下にリンク先URLが表示されます。 URLが一定文字数以上の時、URLが省略されますが、省略せず表示する設定方法はあるのでしょうか? よろしくお願いします。

  • ≪FLASH≫マウスオーバーすると、上に説明が出るボタン

    初心者です。参考書を読んで、FLASHのだいだいはわかりますが、実践はまだというところです。 それで、このようなFLASHを作りたいんですが、作り方を教えてくれませんか? それは、Webで使うメニューで、縦長で、マウスオーバーすると、文字が青くなり、真上(10pxくらい上)に説明が出るものです。 それで、1つ1つの項目はボタンで作りました。 アップに黒い文字、オーバーに青い文字をいれました。 シンプルボタンをオンにすると動作しました。 でも、説明はどうやっていれたらいいのかわかりません。 ボタンのオーバーに説明のテキストを入れると、オーバーしているときのボタンの範囲が上に広がってしまって、マウスを上に移動したとき、上にある項目のボタンが動作しません。 お願いします。

  • 外部テキストをマウスオーバー時に下線表示

    いま、Flash内に外部テキストを読み込ませて、クリックするとリンク先へ飛ぶようなものを作っています。リンク先に飛ばすところまではできたのですが、そのテキストをマウスオーバーした時に色付きの下線が表示されるようにしたいのですが、やり方が分からず困っています。 HTMLタグも何度か試してみたのですが、使えるタグは限られているようなので、うまくいきませんでした。 Flashの中で、下線表示させることもできるようですが、できれば外部ファイル内で表示させる方法を知りたいです。どなたかご存知の方がおられましたら、ご教授お願い致します。 よろしくお願いします。

  • ボタンシェイプにリンクを張ると…

    はじめまして、FLASH初心者です。 ボタンシェイプを作り、「アップ」を3枚の写真が切り替わるムービーにし、 「オーバー」で静止テキストにリンクを張ったメニューを表示させようとしたのですが、 リンク付テキストにマウスを移動するとアップの時のムービーが出てきてしまって困ってます。 ActionScriptで解決できるのかどうかわからず、まだ不慣れなのでご教授願いたいと思います。

    • ベストアンサー
    • Flash
  • 【FireFox】ブラウザのボタンにマウスオーバーする時に出る案内文字

    FireFox3(Win-XP)使用者です。 例えば、「戻る」ボタンにマウスオーバーすると「前のページへ戻ります」と出ますよね? これらの案内ポップアップを非表示にできないものでしょうか。 FireFox自体の設定ではどうにもならないような予感もしますが… いい方法ご存じでしたらお願いいたします。

  • Firefox4のマウスオーバーURLが邪魔

    FirefoxがVer4になってから、リンクにカーソルを合わせるとリンク先のアドレスが アドオンバー(ステータスバー)の上に表示されるようになりましたが、 リンクがページの左下にあると、表示されるアドレスとリンクとが重なってしまい、 リンクをクリック出来なくなってしまいます。 マウスオーバーURLを表示させないか、アドオンバー内に表示させる方法は無いでしょうか?

  • Flash マウスオーバー時などのアニメーションについて質問があります

    Flash マウスオーバー時などのアニメーションについて質問があります。 こんにちは。Flash初心者です。 使用しているソフトは「Adobe Flash CS4 Proffesional」です。 現在、ボタンを製作しております。 その過程でマウスオーバー時、マウスダウン時等に アニメーションを加えようと思っております。 実際にアニメーションは作成できたのですが、 アニメーションが無限にループしてしまいます。 一度きりのアニメーションにしたいのですが、うまくいきません。 どのような処理を行えばよいか教えていただけますでしょうか? よろしくお願いします。