• ベストアンサー

リンクボタンの作り方

初めまして、aco_kanaというものです。お願いします。 過去の質問を捜したのですが、見つからなかったので教えてください。 http://www.nissinfoods.co.jp/com/saiyou/recruit/ 上記のHPの様に、二つの選択肢があり、どちらにするか点滅していて、カーソルをどちらかに合わせたら、その点滅がとまり、選んだ方のボタンの色が変わるといったものを作りたいのですが、ムービークリップで、点滅アニメを作り、それをボタンのアップに置いて・・・などとしているのですが、点滅はしたままで、どなたかよい方法があれば教えてください。

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

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

#1の方に続き2例目として。 > ムービークリップで、点滅アニメを作り、それをボタンのアップに置いて・・・ そうではなくて, ムービークリップ内にボタンを2つずつ,合計4つ置けば良いと思いますよ。 ボタンが「A」と「B」であったとして, 「A」にも「B」にも,『桃色』と『黄色』がある。 つまり, 「A黄」 ボタン,「A桃」ボタン,「B黄」ボタン,「B桃」ボタンがある。 合計4つです。 黄色がマウスが当たった状態だとします。 ムービークリップ内のレイヤー               A黄      A桃  □レイヤー 筆・・|◎///////[]|●///////[]|  □レイヤー 筆・・|●///////[]|◎///////[]|               B桃      B黄 また, 「A黄」 と 「B桃」 のフレームが 1~20フレーム, 「A桃」 と 「B黄」 のフレームが 21~40フレーム であったとします。 「A黄」ボタンには,次のように書きます。 -------------------------- on (rollOver) { this.gotoAndStop(1); } on (rollOut, dragOut) { this.gotoAndPlay(21) } -------------------------- 「A黄」ボタンにロールオーバーしたら, 「A黄」ボタンが存在する階層(ムービークリップ)のフレームを1に行かせてストップさせます。 これで,「A」は黄色のままになります。 ロールアウトしたら,「B黄」で(「A桃」で)再生開始です。 「A桃」ボタンには,次のように書きます。 -------------------------- on (rollOver) { this.gotoAndStop(1); } -------------------------- 「A桃」ボタンにロールオーバーしたら, 「A桃」ボタンが存在する階層(ムービークリップ)のフレームを1に行かせてストップさせます。 つまり,「A」は黄色になります。 「B桃」ボタンには,次のように書きます。 -------------------------- on (rollOver) { this.gotoAndStop(21); } -------------------------- 「B桃」ボタンにロールオーバーしたら, 「B桃」ボタンが存在する階層(ムービークリップ)のフレームを21に行かせてストップさせます。 つまり,「B」は黄色になります。 「B黄」ボタンには,次のように書きます。 -------------------------- on (rollOver) { this.gotoAndStop(21); } on (rollOut, dragOut) { this.gotoAndStop(1) } -------------------------- 「B黄」ボタンにロールオーバーしたら, 「B黄」ボタンが存在する階層(ムービークリップ)のフレームを1に行かせてストップさせます。 これで,「B」は黄色のままになります。 ロールアウトしたら,「A黄」で(「B桃」で)再生開始です。 各ボタンは, アップフレームだけに何かの絵などを用意すれば良いだけです。 ただし, ボタンはムービークリップの中に入っていますから, 階層には気を付けてください。 もし, 今まで A のボタンをクリックした動作として, --------------------------- on(release){ gotoAndStop(50); } --------------------------- などと書かれていらっしゃったのでしたら, --------------------------- on(release){ this._parent.gotoAndStop(50); } --------------------------- とか, --------------------------- on(release){ _root.gotoAndStop(50); } --------------------------- とかにする必要があります。 ターゲットパス http://homepage3.nifty.com/ginga-b/MX/targetpath.html

aco_kana
質問者

お礼

sassakunさん はじめまして。 親切に教えて頂いてありがとうございます。 早速チャレンジしてみたのですが、うまく反応してくれませんでした・・。もう一度じっくりチャレンジしたいと思います。 ありがとうございました。

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

その他の回答 (5)

noname#35109
noname#35109
回答No.6

#3&#5です。 ボタンをムービークリップで作ったり(#1の方の例), ムービークリップにボタンを入れた場合(#3の例), on (release) { gotoAndPlay("シーン名",フレーム数); } ではシーン移動はできません。 シーンA のフレーム1を選択して, 下のプロパティインスペクタより,フレームラベルを付けてください。 仮に「A」というフレームラベル名を付けたとしておきます。 シーンB のフレーム1も同様に, 下のプロパティインスペクタより,フレームラベルを付けてください。 仮に「B」というフレームラベル名を付けたとしておきます。 そして,「A黄」ボタンに, on (release) { _root.gotoAndPlay("A"); } を付け加えます。 つまりこんな感じになります↓。 ------------------------- on (rollOver) { this.gotoAndStop(1); } on (rollOut, dragOut) { this.gotoAndPlay(21) } on (release) { _root.gotoAndPlay("A"); } ------------------------- 「B黄」にも同様に on (release) { _root.gotoAndPlay("B"); } を付け加えてください。 gotoAndPlay("シーン名",フレーム数); ができない件につきましてはこちらに詳細が書いてあります↓。 「gotoAndPlay/gotoAndStopでシーンの移動ができない」 http://www.fumiononaka.com/TechNotes/Flash/FN0205002.html

aco_kana
質問者

お礼

いけました! 詳しく親切に教えていただきありがとうございました! 感激です。

すると、全ての回答が全文表示されます。
noname#35109
noname#35109
回答No.5

すみません。#3 です。 「B黄」ボタンに書き間違いがありました。 this.gotoAndStop(1) → this.gotoAndPlay(1) です。 通して書くと「B黄」ボタンには,次のようになります。 ---------------------- on (rollOver) { this.gotoAndStop(21); } on (rollOut, dragOut) { this.gotoAndPlay(1); } ---------------------- あと念を押しますが,同じムービークリップの中に4つのボタンを入れるとうまくいくのですよ。 階層を書くと次のような感じです。  _root    └ムービークリップ         ├ 「A黄」・「A桃」ボタン         └ 「B桃」・「B黄」ボタン ムービークリップ内のフレームで書くと次のような感じです。  フレーム数 1~20  21~40          A黄   A桃          B桃   B黄  

aco_kana
質問者

お礼

ありがとうございます! 思っていた、動きになりました! A桃とB桃をいれると上手くできなかったのですが、A桃とB桃の部分を 空白フレームにしたら動きました。A桃とB桃を消すことで不具合はありますか? それと、動きはできたのですが、リンクなのですが、 シーンAとシーンBを別に作ってあるのですが、Aを押すとシーンAにBを押すとシーンBに行くようにしたいのですが、それには、どこにどういった記述をすればよいのでしょうか?? 何度もすいませんが、お願いします。

すると、全ての回答が全文表示されます。
  • hachi_08
  • ベストアンサー率58% (44/75)
回答No.4

#1です。 button1・button2、anime・default・over などの名前を同じにしてもエラーが出ますでしょうか? こちらで書き込んだActionScriptをコピーしてみましたが、正常に動作しました。 私の環境はFlash8なのでその違いなのでしょうか…。 お役に立てなくて申し訳ありません。

aco_kana
質問者

お礼

ありがとうございます。 お役に立てないなんてとんでもないです! ものすごく勉強になります! すごく初歩的なことだとおもうので、申し訳ないのですが 書いてもらったActionScriptをコピーして、シーン1のフレームを選択して、アクションパネルをだして、その空欄にペーストしようと思っても、エラーとなり記述できないのです・・・。どこか別に記述するところがあるのですか?

すると、全ての回答が全文表示されます。
  • hachi_08
  • ベストアンサー率58% (44/75)
回答No.2

#1です。 lavel⇒labelですね。済みません! フレームラベルのことです。

すると、全ての回答が全文表示されます。
  • hachi_08
  • ベストアンサー率58% (44/75)
回答No.1

他にもやり方があると思いますが、一例として…。 //////////////////////////////////////////////////////////////// 1)ボタンにするムービークリップを2つ作り、それぞれをシーンに配置して「button1」「button2」という名前を付けます。 2)ボタンには 「点滅するアニメのフレーム」 「デフォルトのボタンの色」 「色が変わった(選択された)ボタンの色」 のフレームがあり、それぞれにlavelをつけます。 ボタンインスタンスではなくムービークリップで作ります。 3)シーンのフレーム1に↓のActionScriptを書きます。 ---------------------------------------------------------------- button1.onRollOver = onMouse; button2.onRollOver = onMouse; button1.onRollOut = ontMouse; button2.onRollOut = ontMouse; function onMouse():Void { this.gotoAndStop("over"); for(i=1;i<=2;i++) { if(this._name != "button" + i) { _root["button" + i].gotoAndStop("default"); } } } function ontMouse():Void { this.gotoAndPlay("anime"); for(i=1;i<=2;i++) { if(this._name != "button" + i) { _root["button" + i].gotoAndPlay("anime"); } } } ---------------------------------------------------------------- この例では、 「点滅するアニメのフレーム」⇒anime 「デフォルトのボタンの色」⇒default 「色が変わった(選択された)ボタンの色」⇒over というlavel名をつけています。 animeの最後のフレームにgotoAndPlay(1); defaultとoverにそれぞれstop();を書いています。 ※forの部分はこんなことをしないで直接書いてもいいのですが…これだとfunctionが1つで済むのでボタンが増えたときに対処しやすいです。 //////////////////////////////////////////////////////////////// かなり分かりにくくて済みません。 うまく伝わるといいのですが…。

aco_kana
質問者

お礼

hachi_08さん はじめまして。 親切に教えて頂いてありがとうございます。 早速チャレンジしてみたのですが、シーンのフレーム1に button1.onRollOver = onMouse; button2.onRollOver = onMouse; button1.onRollOut = ontMouse; button2.onRollOut = ontMouse; function onMouse():Void { this.gotoAndStop("over"); for(i=1;i<=2;i++) { if(this._name != "button" + i) { _root["button" + i].gotoAndStop("default"); } } } function ontMouse():Void { this.gotoAndPlay("anime"); for(i=1;i<=2;i++) { if(this._name != "button" + i) { _root["button" + i].gotoAndPlay("anime"); } } } を書くことができません。 初歩的な質問だったら申し訳ないのですが、このアクションにはエラーがあります・・となります。 ちなみにこちらの環境はflash5です。 また教えていただけるとありがたいです。

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

関連するQ&A