• ベストアンサー

ボタンの上にマウスが乗るとムービが動くようにしたい(FlashMX2004)

FlashMX2004でこのようなことをしたいのですが ボタンとムービーにどのような設定をすればよいのでしょうか? ステージ上に重ならないように2つのボタン(A,B)と1つのムービー(C)が 配置されています。1つ目のボタン(A)の上にマウスが乗ると、ムービー (C)の2フレーム目から6フレーム目まで動きます。(B)の上にマウスが乗ると 12フレーム目から16フレーム目まで動きます。 ボタンの数が多いのでなるべくfunction関数を使いたいのですが、 使い方が分かりません。よろしくお願いします。

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

イベントハンドラを使って、イベント発生時に呼ぶ関数の定義の方法、ということで、よろしいでしょうか? 対象がボタンでもムービークリップでも同様なのですが、  インスタンスのターゲットパス.イベントハンドラ名 = function ()  {   ・・・  }; という形式になります。普通は、フレームアクションとして設定します。 例えば、ステージに、ボタンのインスタンス button_a と button_b、ムービークリップのインスタンス clip_c があるとします。 button_a にマウスカーソルが乗った時、clip_c のフレーム2から、button_b にカーソルが乗った時はフレーム 12 から再生させるスクリプトは、次のようになります。このスクリプトは、メインのタイムラインのフレームに設定します。  //ボタンAにカーソルが乗った時の処理  button_a.onRollOver = function ()  {   clip_c.gotoAndPlay(2);  };  //ボタンBにカーソルが乗った時の処理  button_b.onRollOver = function ()  {   clip_c.gotoAndPlay(12);  }; (↑このスクリプトをコピーして使う場合は、各行の行頭に入っている全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) ボタンにマウスが乗った時の処理はこれで完成ですが、これだけでは、ムービークリップがステージに登場するなり、いきなり再生されてしまいます。 ムービークリップは、ボタンにイベントが発生するまで再生を止めておく必要があります。 止めるのは最初の1度だけで構いませんので、ムービークリップがステージに登場した時1度だけ発生する load イベントを使うといいでしょう。 従来の onClipEvent を使っても同じですが、先ほどのボタンの処理と同様に function の形式で書くこともできます。このスクリプトは、やはりメインのタイムラインのフレームに設定します。  //最初はムービークリップの再生を止めておく  clip_c.onLoad = function ()  {   this.stop();  }; また、これでは、Aにカーソルが乗った時はフレーム2から、Bにカーソルが乗った時はフレーム 12 から再生されるというだけで、そのまま clip_c の最後のフレームまで一気に再生されてしまいます。 Aの時はフレーム2~6、Bの時はフレーム 12 ~ 16 で再生を止めるには、clip_c のフレーム6と 16 に、それぞれ stop(); アクションを設定します。これはメインのタイムラインにではなく、ムービークリップのタイムラインに設定します。 長くなってすみませんでした。 不明な点がありましたら、補足してください。

apache6
質問者

お礼

詳しく説明してくれてありがとうございます。 無事、完成させることができました。

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

その他の回答 (2)

noname#107580
noname#107580
回答No.3

こんにちは! まず、ムービークリップの編集画面の、フレームの 1、12、16、フレームに、 this.stop(); を入れます。 シーンに戻って、 ムービークリップに名前を付けます。 例えば『move_c』としました。 ムービークリップを選択した状態で、 onClipEvent(load) {  function aaa (){   gotoAndPlay(2);  }  function bbb() {   gotoAndPlay(12);  } } Aボタンに on(rollOver) { move_c.aaa(); } Bボタンに on(rollOver) { move_c.bbb(); } ただ、2フレーム目から6フレーム目までの再生後には6フレーム目で止まった状態になります。 1フレーム目に戻りたいのであれば、 ムービークリップの12,16フレームの this.stop(); を this.gotoAndStop(1); にして下さい。

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

こんにちは。 function関数ではないですけど。 ムービー(C)には名前つけてますか? 仮に「movie_c」だとすると、 on(RollOver){ movie_c.gotoAndPlay(2); } on(RollOut){ movie_c.gotoAndStop(1); } てな感じでいけません?

apache6
質問者

補足

うまく動作しませんでした。 ムービーの方はレイヤーを追加して 1フレーム目にstop();でいいのでしょうか?

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

関連するQ&A