メニューとボタンの演出について

このQ&Aのポイント
  • スクロールメニューのボタンにキラキラ光る演出を加える方法について教えてください。
  • スクロールメニューのボタンとパネルを連動させてキラキラ光る演出を実現したいです。
  • yahoo10周年サイトのFLASHのようなボタンのキラキラ光る演出を作りたいです。
回答を見る
  • ベストアンサー

メニューとボタンの演出について

たびたび失礼致します。 http://oshiete1.goo.ne.jp/qa2544902.html および http://oshiete1.goo.ne.jp/qa2555710.html でお世話になりました。おかげさまで、FLASHのほうも完成しました。 さて、この度、上記のスクロールメニューの続きで、新たにどうしても分からない事が出てきてしまい、困っております。 スクロールメニューのボタンなんですが、パネル部分の動きと連動させて、ボタンがキラっと光るような演出(yahoo10周年サイトのFLASHみたいなやつです)をしたいのです。 このような演出はどのようにすればよいのでしょうか? どうか、ご教授下さいますよう、よろしくお願い申し上げます。

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

そのご質問は, 「Yahoo! JAPAN - ありがとう10周年」 http://10thann.yahoo.co.jp/ のご質問だと考えて良いわけですよね。 Yahoo! 10周年 のボタンは, ムービークリップで作られているのです。 最近多いですよ,ムービークリップで作る自作ボタンというものです。 ボタンをムービークリップで作る方が手間ですが, ずっとカスタマイズしやすいので,面白いボタンが色々作れます。 スクリプトの説明は簡単なのですが, 構造の作成が出てきますからココでは難しいです。 ですから, これまた簡単なサンプルの作り方を説明します。 4枚の動くスライドはすでにできてあるという状態で, ボタンムービークリップの作成からです。 まずボタンの大きさ程度の,塗りの入った長方形を描きます。  ■■■■■■■  ■□□□□□■  ■■■■■■■ そして目印に,真ん中に「1」でも書いて下さい。  ■■■■■■■  ■□□ 1□□■  ■■■■■■■ この文字入り長方形をムービークリップに変換します。 変換したらダブルクリックで,ムービークリップ内の編集に入ります。 ムービークリップ内のタイムラインは, 次のような状態になっていると思います。  レイヤー 筆・・|●| これを3フレームにします。  レイヤー 筆・・|●//[]| そして,各フレームをすべてキーフレームにします。  レイヤー 筆・・|●|●|●| ここまでで,全てのフレームには,すべて同じ長方形が入っていると思いますから, フレーム2 の長方形の文字を 2, フレーム3 の長方形の文字を 3 にそれぞれ変えます。 つまり,それぞれのフレームには,  ---フレーム1---  ■■■■■■■  ■□□ 1□□■  ■■■■■■■  ---フレーム2---  ■■■■■■■  ■□□ 2□□■  ■■■■■■■  ---フレーム3---  ■■■■■■■  ■□□ 3□□■  ■■■■■■■ という文字入り長方形が書かれているわけです。 1,2,3 は 今ムービークリップ内はどのフレームを表示しているか という単なる目印です。 この フレーム3 を他のボタンに移ったときのアニメーションフレームにしたいと思うので,  ■■■■■■■  ■□□ 3□□■  ■■■■■■■ これをさらにムービークリップに変換してください。 変換したら, そのフレーム3のムービークリップをダブルクリックして, ムービークリップ内の編集に入ります。 ムービークリップ内のタイムラインは, 次のような状態になっていると思います。  レイヤー 筆・・|●| これを,だいたい 10フレーム くらいにしてください。 だいたい 10フレーム です。 何フレームでもかまいません。 だいたい 10フレーム にしたら1つレイヤーを追加して, 2レイヤーにし,その新しく作った方の最終フレームをキーフレームにします。 雰囲気,次のような感じです。  レイヤー 筆・・|○         []|○|  レイヤー 筆・・|●/////////////[]| そして, 最終フレームの空白キーフレームに ---------------------------- this._parent.gotoAndStop(1); ---------------------------- というスクリプトを書いておきます。 要はこのムービークリップが最後のフレームまで再生されたら, 自分の親(_parent)であるムービークリップ, つまり 「1」「2」「3」 という長方形が3フレームにあるボタンムービークリップのタイムラインを, フレーム1 に進めるということです。 できたら,ムービークリップ内の編集は終わりで, メインムービーの編集に戻ります。 ステージ上には, 上のボタンムービークリップができていると思いますから, 例えば,ボタンが4つあった場合, そのムービークリップを縦にコピペして4つにします。 複数フレーム の ボタン用ムービークリップ を用意して, そして上から順に, 「buttonMC0」「buttonMC1」「buttonMC2」「buttonMC3」 という感じにインスタンス名を付けます。 次にフレームのスクリプトです。 Yahoo! 10周年 の場合は, 自動で他のボタンにフォーカスが変わるときに, 徐々に暗くなるムービークリップを入れた フレーム , つまりボタンムービークリップの フレーム3 に移動するように作られています。 この徐々に暗くなるムービークリップと, キラッと光るムービークリップを入れたフレームに移動するムービークリップの両方に, フレーム移動の命令を与えなければならないので, フラグ(flg)を1つ増やして2つにしなければなりません。 全体的には,前のスクリプトとほとんど変わりませんが, その他,改良した点には,★印をいれています。 ------------------------------------------ //スピードの設定(可変) var spd = 3/10; // // フラグの初期値を設定 ★ var flg0 = 0; var flg1 = 0; // // 各変数の初期値を代入(目標座標を記録) var slideY0 = slideMC._y; var slideY1 = slideMC._y-(slideMC._height/4); var slideY2 = slideMC._y-(2*slideMC._height/4); var slideY3 = slideMC._y-(3*slideMC._height/4); // // 最初だけ buttonMC0 を フレーム2 へ移動 ★ _root.buttonMC0.gotoAndStop(2); // 1フレーム進む時間ごとに毎回実行 _root.slideMC.onEnterFrame = function() { // slideMC の y座標を slideY? に近づける this._y += (_root["slideY"+_root.flg0]-this._y)*_root.spd; }; // // ユーザー定義関数 slideMove の定義 function slideMove() { // flg1 に flg0 の値を保存 ★ _root.flg1 = _root.flg0; // flg0 の 値が 3 より小さければ if (_root.flg0<3) { // flg の値に 1 を加算 _root.flg0++; } else { // それ以外の場合は flg を 0 にする。 _root.flg0 = 0; } // buttonMC のフレーム移動 ★ _root["buttonMC"+_root.flg0].gotoAndStop(2); _root["buttonMC"+_root.flg1].gotoAndStop(3); } // ユーザー定義関数 slideMove2 の定義 ★ function slideMove2() { // buttonMC のフレーム移動 ★ _root["buttonMC"+_root.flg0].gotoAndStop(2); _root["buttonMC"+_root.flg1].gotoAndStop(3); } // //--- ココから以降を変更 --- // ユーザー定義関数 myfunc の定義 function myfunc() { // 4000ミリ秒(4秒)ごとに slideMove を実行 myID = setInterval(slideMove, 4000); } // ユーザー定義関数 myfunc の実行(初回) myfunc(); ------------------------------------------ そして, 一番上の 「buttonMC0」 には次のように書きます。 ------------------------------------------ // このムービークリップが表示されたとき onClipEvent (load) { // とりあえずストップ this.stop(); } // // このムービークリップにロールオーバーで on (rollOver) { // このムービークリップを フレーム2 に進める this.gotoAndStop(2); // setInterval のクリア clearInterval(_root.myID); // flg1 に flg0 の値を保存 _root.flg1 = _root.flg0; // flg0 に 0 (自分の番号) を代入する _root.flg0 = 0; // ユーザー定義関数 slideMove2 の実行 _root.slideMove2(); } // // このムービークリップからロールアウトで on (rollOut) { // ユーザー定義関数 myfunc の実行 _root.myfunc(); } on (release) { //←何か動作を書く } -------------------------------------------- 二番目の 「buttonMC1」 には次のように書きます。 -------------------------------------------- // このムービークリップが表示されたとき onClipEvent (load) { // とりあえずストップ this.stop(); } // // このムービークリップにロールオーバーで on (rollOver) { // このムービークリップを フレーム2 に進める this.gotoAndStop(2); // setInterval のクリア clearInterval(_root.myID); // flg1 に flg0 の値を保存 _root.flg1 = _root.flg0; // flg0 に 1 (自分の番号) を代入する _root.flg0 = 1; // ユーザー定義関数 slideMove2 の実行 _root.slideMove2(); } // // このムービークリップからロールアウトで on (rollOut) { // ユーザー定義関数 myfunc の実行 _root.myfunc(); } on (release) { //←何か動作を書く } -------------------------------------------- 以下同様で,つまり,  // flg0 に 1 (自分の番号) を代入する  _root.flg0 = 1; ココの部分が, 「buttonMC2」 だと  // flg0 に 2 (自分の番号) を代入する  _root.flg0 = 2; 「buttonMC3」 だと  // flg0 に 3 (自分の番号) を代入する  _root.flg0 = 3; となるだけで他は同じです。 これで,パブリッシュしてもらうと, スライドが動き,ボタンの数字が変わるものができます。 4つある「buttonMC○」の キラっと光るのはフレーム2です。              ↓キラっ  レイヤー 筆・・|●|●|●| 現在は 「2」が表示されるだけですが, この「2」のようなものをフレーム3と同様にムービークリップに変換して, その中にキラっと光らせるアニメーションを作れば良いだけです。 この辺は Flash のお絵かきやモーショントゥイーンの基礎に当たる部分ですから, ここでは逐一説明しにくいです。 フレーム2 ムービークリップの中にさらにムービークリップを入れて, そのムービークリップの「明度」を明るい状態から,中間くらいの明るさにモーショントゥイーンさせるなどです。 最終フレームは, this.stop(); でしょう。 フレーム3 も同様。 フレーム3 ムービークリップの中にさらにムービークリップを入れて, そのムービークリップの「明度」を中間くらいの明るさから,暗い明るさにモーショントゥイーンさせるなどです。 以上,わかりにくい点もあったとは思いますが, まるごとそのまま,Yahoo! 10周年 のそっくりなボタンの作り方です。 もっともそっくり真似をする必要はありませんし, できれば真似はしない方が良いと思います。 どうするかは,Yahoo! 10周年 にとらわれず,自分なりに研究してみてください。 ムービークリップをボタンとして扱っているサイトは数多いです。 ボタンシンボルのインスタンスでは物足りませんからね。 次のURLは,Yahoo! 10周年 とは全く別のボタンですが, 作り方が書いてありサンプルも置いてくれています。 ムービークリップのボタン化 http://homepage3.nifty.com/ginga-b/MX/btnmc.html しかし,このURLを鵜呑みにする必要は全くありませんよ。 例えば, > フレームラベル用のレイヤーを用意し、 > 「アップ」用のフレームには「_up」、 > 「オーバー」用には「_over」、 > 「ダウン」用には「_down」というフレームラベルを付けます。 とか書いてあります。 こうすると便利にボタンのように扱えますが, この辺は全く無視していてかまいません。 この回答で書いたように, 普通のムービークリップのように扱えば良いのです。 重要なのは,最後の, > ボタンムービークリップに記述される > on ( event ) ハンドラ内では、thisキーワードは、 > 親ではなく自分自身を指します。 > 非常に混乱する仕様ですので、記述するときは > 十分注意してください。 です。これは重要です。 ---P.S.-------------------------- 以前の質問で, ボタンのスクリプトを, on (release) { _root.flg = 2; } などとして, 他もわざわざ _root など,絶対パスで書いたのはそのためです。 ボタンは階層をもちませんから, on (release) { flg = 2; } でも大丈夫です。 しかし,ひょっとしたら, 「質問者の方は,ボタンをムービークリップで自作しているか,将来的に自作する可能性があるぞ。」 と考えたので,わざと _root.flg = 2; にして, もしその場合でも変な所で躓かないようにはしていたのです。 ムービークリップでボタンを自作する場合, 階層が1つずれますから,絶対パスで指定するか, 相対パスで指定する場合は,階層に気を付けてください。 アクションパネルの 丸(○) に十字(+)のアイコンの, 「ターゲットパスを挿入」ボタンをクリックして, 目的のダーゲットのパスを探しても良いです。 ここでは説明しにくい構造にあたる部分が多いです。 色々と実践研究してみてください。

yesFLASH
質問者

お礼

回答いただきまして、大変有り難う御座います。 >Yahoo! 10周年 のボタンは, >ムービークリップで作られているのです。 ムービークリップって色々な部分で使えるんですね。本当に勉強になりました。 ボタンで行き詰まる事を考慮して、何度も回答頂いた事に頭の下がる思いです。 yahoo10周年のような演出なんですが、ボタン部分を一目見て、見る人が「これはボタンだ」と分かるようにしてみたかったのです。 色々見て回るうちに、ちょうどyahoo10周年のFLASHにいきついて、こういった演出なら分かりやすいのでは?と思い作成に挑戦しようと思った次第です。 3度にわたる丁寧な回答を頂きまして、本当に有り難う御座います。 ボタンに関しては、ムービークリップだと色々できて面白いとの事ですので、ぜひ研究実施を重ねていきたいと思います。

関連するQ&A

  • アコーディオンメニュー

    下記のスクリプトで、一定時間ごとに動くアコーディオンメニューを作ることができました。さらに、これを改良して、パネルをクリックしたら、それぞれ設定したURLに飛ぶようにするにはどうしたらよいでしょうか? http://oshiete1.goo.ne.jp/qa4766273.html

  • 外部読み込み画像のスライドメニューの動き

    Flash初心者です。 環境:WindowsXP,Flash8,as2.0 独学でFlashを学んでいて、練習として下記URLのFlashを制作しています。 http://homepage2.nifty.com/meary/ まず、外部読み込みの画像(サムネイルのようなもの)をボタンとしています。 そして、そのボタンをまとめてMCにして、 上下のスクロールボタンをクリックするとそれぞれ上下にスライドする、というところまで制作出来ました。 ですが、私の希望の動きはドコモのサイト http://www.nttdocomo.co.jp/ のFlash部分、下の方のFlash用コンテンツメニューの様な動きなのです。 スクロールボタンをクリックしなければ「ボタン部分のMC」は一定時間ごとにスライドし、出来れば「ボタン」にロールオーバーしている間は「ボタン部分のMC」を停止させる。マウスが離れたらまた動き出す。 初心者ながら、ネットや本でASを調べてみましたが、 うまくこのように動いてくれず行きずまってしまいました。 上述の様な動きをさせるにはどのようなASを記述すればいいのか、やりやすいのか、ご教授いただけませんでしょうか。

  • 連動セレクトメニュー option数の上限?

    http://oshiete1.goo.ne.jp/qa3016549.html 上記質問の回答(ANo.2)ソースをコピペして、 連動セレクトメニューを作ったのですが、 セレクト1のoption数が51コ以上になると、 51コ目からセレクト2が表示されなくなります。 どこかで個数制限をしているのでしょうか・・・? 解決方法がお分かりになる方、いらっしゃいますでしょうか。 どうぞよろしくお願い致します。

  • メニュースクロール

    質問です。 メニューがスクロールするFLASHを作りたいのですが うまくゆきません。 ボタンにポインタを置いた時にスクロールさせるところまでは出来たのですがポインタを離して放置しておくと、勝手にスクロールしてくれるようにしたいのです。 setIntervalがヒントだというトコロまではなんとか漕ぎ着けたのですが actionscriptはほとんど分からないため、困っています。 どうかご教授のほどお願いいたします。 環境はWindows2000にてFLASH8professionalを使用しています。

    • ベストアンサー
    • Flash
  • FLASHドロップダウン(?)メニュー

    さきほど http://oshiete1.goo.ne.jp/kotaeru.php3?q=714572 で質問させていただいたのですが状況が変わったので再度質問させていただきます。 【★】というボタンにロールオーバーするとメニューが下記のように出てきて、さらにロールアウト(メニューも含む)するとメニューが戻るというようにしたいのです。 【★】  ↓ロールオーバー 【★】自己紹介 掲示板 【★】ボタンは画像1と画像2からなってます。 透明のレイヤーを入れればいいのかと思い、画像2にメニューのすべてが収まるように透明な四角を描いた所意図する動きになりました。 が!メニューのボタンが生きてこないのです。 あたりまえですが、透明の四角の下にボタンがあるので、ロールオーバーにならないのです。 逆にボタンの方を下に配置してしまうと、【★】からマウスが離れたとたんメニューが戻ってしまいます。 どのようにしたらいいのでしょうか?

  • safariのファイルメニュー

    すいません。先日↓の質問 http://oshiete1.goo.ne.jp/qa4757798.html でsafariのファイルメニューから行うbookmarkの方法についてご解答いただいたのですがいざ挑戦しようとしてお恥ずかしながらファイルメニューが何かが分かりませんでした。本当に恐縮ですが分かりやすくご教授願います。

    • 締切済み
    • Mac
  • Flash マウスの位置で速さの変わるスクロールメニュー

    Flashでスクロールメニューを作成したいのですが、うまくいきません。 ボタンを羅列しムービークリップにし、 onClipEvent (load) { Min = -80*15; speed = 20; } onClipEvent (enterFrame) { if (_parent.mask.hitTest(_root._xmouse,_root._ymouse,0)) { this._x -= _parent.mask._xmouse/speed; if (this._x >0) { this._x += Min; } else if (this._x < Min) { this._x -= Min ; } } } 上記のスプリクトを記述することで動かすことには成功しました。 しかし上記スプリクトでは、ドキュメントサイズ内では、メニューにマウスオーバーしないと制止してしまいます。 http://www.sophia-eternal.com/ 上記サイトの様に、読み込んだ時から常にゆっくりスクロールし、 マウスオーバーした時にのみ動きの速さを変えるにはどのようなスプリクトを追加すればよろしいでしょうか? メニューのみのFlashファイルを作成し、HTMLで組み立てれば早いのですが、 デザイン上、ページ全体を1つのFlashファイルで作成するしかありません。 メニューが常にスクロールしていて、マウスオーバーした時にのみ動きの速さが変わる様にしたいのです。 宜しくお願い致します。

  • 右クリックメニューから「送る」が消えたんです。

    お世話になります。 右クリックメニューの送る(デスクトップにショートカットを作成したりする場合)が消えてしまいました。 http://oshiete1.goo.ne.jp/qa3031311.html を参考にやってみましたが、いまいちやり方が違うのか出てきません。 どうすればいいでしょうか。ちなみにそういうものを復活させるようなソフトがあるのでしょうか。 よろしくお願いします。

  • スクロールメニューその2

    以前コチラでスクロールメニューについて質問させていただいた者です。 丁寧な回答を頂き、なんとか完成に漕ぎ着けた次第ですが、実はまたしても疑問が浮上してきました。 4秒おきにスクロールするのですが、その場合ボタンの制御を無視してしまうようなのです。 『rolloutした場合、そこから起算して』一定時間間隔でスクロールをさせるにはどうすればよいのでしょうか? どうかご教授のほどよろしくお願いいたします。 環境はウィンドウス2000にてFLASH8professionalを使用しております。

    • ベストアンサー
    • Flash
  • ボタンクリックでスライドするメニューについて

    質問させていただきます。 --------- ■制御ボタン:2つ △配置ボタン:4つ(幅各130px) 画像:ボタンとリンクした画像4枚を配置ボタンクリックで切り替え --------- 左右に制御ボタンを配置し、 その間を、130pxずつ右または左にスライドして移動する ボタンメニューを作成したいと考えております。 ↓イメージです。(■:制御ボタン △:画像表示用ボタン 左の■ボタンを押すと△が左に130px分移動 右も同様に右に130px分移動する) ■△△△△■ 各△ボタンを押すと、メニューの上の領域に ボタンに対応した画像が表示されます。 Flash初心者のため、一からスクリプトを書くことが出来ず 同じ動きをするサンプル、またはカスタマイズ前提の参考サイトを 探しておりますが カーソルで△が動くものはあるものの、ボタンで動くものを見つけることが出来ずにいます。 参考サイトをご存知の方、または作成方法をご教示頂ける方が居られましたら何卒よろしくお願いします。 《環境 WinXP Flash8》

    • ベストアンサー
    • Flash

専門家に質問してみよう