マウスに追従するクリップの範囲について

このQ&Aのポイント
  • マウスに追従するムービークリップの反応範囲を制御する方法について教えてください。
  • マウスがムービーの中に入ったときにのみ追従するようにし、ムービーが定位置に戻るときはゆっくりと追従の流れを残しつつ戻りたいです。
  • 使用している環境はWin XP : MX 2004です。
回答を見る
  • ベストアンサー

マウスに追従するクリップの範囲について

はじめて投稿します。初心者ですが、よろしくお願い致します。 マウスに追従するムービークリップについて onClipEvent(enterFrame){ this._x += (_root._xmouse - this._x)/10; this._y += (_root._ymouse - this._y)/10; } としておりますが、マウスがムービーの中に入ったときだけ 反応するようにし、マウスがムービーの外にでるとムービー クリップが定位置に戻るようにしたいのですが よい方法がありましたら教えてください。 定位置に戻るときも追従の流れを残したまま、ゆっくり定位置に 戻るようにしたいと思っております。 よろしくお願いいたします。 Win XP : MX 2004

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

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

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.4

エラーメッセージはなんと出ていますか? **エラー** シーン = シーン 1, レイヤー = レイヤー 1, フレーム = 1 :行 2:ステートメントは on/onClipEvent ハンドラ内でなくてはいけません。   function MoveMe() {    などとでていたら、スクリプトを書く場所が原因です。 スクリプトを記述しているアクションパネル[F9]のタイトルが 「アクション - ムービークリップ」 となっているはずです。 これはムービークリップにスクリプトを書いていることになるので #1で書いたものをムービークリップ用に多少書き直さなければなりません。 #1のスクリプトをそのまま使うためにはフレームに書く必要があります。 タイムライン [ctrl+alt+T] 内をどっか適当にクリックするか、 ステージ内のシンボルとかが何も置いてないところをクリックしてください。 そうするとアクションパネルのタイトルが 「アクション - フレーム」になるのでそこにスクリプトを記述してください。

sazabi04
質問者

お礼

できました(^_^) ありがとうございました。 これからもよろしくお願いいたします。

その他の回答 (3)

回答No.3

回答させていただきます。 えと、開発環境がpraflaなので、MX 2004の詳しいことはわからんのです。ASだけ回答します。 まず、マウスに追従する設定ですが、 追従範囲のインスタンス名(paraflaではスプライト名)をareaに設定します。 その後、マウスに追従させるムービークリップに以下のASをコピペしてください。 onClipEvent(load){ ////////設定////////// ax=100; //定位置x ay=100; //定位置y speed=5; //追従速度 mousehide=0;//マウス表示(1で非表示、0で表示) //////設定終わり////// } onClipEvent (enterFrame) { ///////マウス表示、非表示/////// if(mousehide==1&&_root.area.hitTest(_root._xmouse, _root._ymouse, true)){ Mouse.hide(); } else {Mouse.show();} /////ここまで/////// /////////マウス追従///////// if (_root.area.hitTest(_root._xmouse, _root._ymouse, true)) { _x += (_root._xmouse - _x)/speed; _y += (_root._ymouse - _y)/speed; } /////ここまで/////// //マウス定位置への移動// else{ _x += (ax-_x)/speed; _y += (ay-_y)/speed; } /////ここまで/////// } です。 自分の作っている作品からの引用なので、いらんとこは消してください。 また、用語間違ってたら誰か指摘お願いします

sazabi04
質問者

補足

ご回答ありがとうございます。 さらに理解不能といいますか。。頭が混乱しております(>_<) 少しずつ勉強してみます。。 ありがとうございました。

  • perse
  • ベストアンサー率74% (113/152)
回答No.2

私の方でも試してみましたが動きました。 インスタンス名つけましたか? #1で書いたスクリプトの一番下にでも trace(_root.my_mc) trace(_root.area_mc) と書いてムービープレビュー[ctrl+Enter]してみてください。 undefinedとでたらインスタンス名が設定されていない証拠です。 インスタンス名とシンボル名は違います。 「シンボルに変換」でつけた名前はシンボル名です。 インスタンス名とはステージに配置したときの名前です。 つけ方はシンボル(ムービークリップ)を選択して[ctrl+F3]でプロパティパネルを開きます。 そこに<インスタンス名>と入力されたテキストボックスがあるのでそこに記述してください。

sazabi04
質問者

補足

度々、ありがとうございます(^_^) インスタンス名を入力してませんでした。。 早速入れてみたのですが、下記のエラーがでてしまいます。。 function() { ActionScript エラー数 :4 報告済みエラー :4 なぜでしょう?? お手数をおかけしてすいません。。(^_^;) よろしかったら、教えてください。。

  • perse
  • ベストアンサー率74% (113/152)
回答No.1

ステージに、 追従するMC[インスタンス名:my_mc]と マウス追従の有効範囲となるMC[インスタンス名:area_mc]を配置します。 //マウスに追従 function MoveMe() { this._x += (_root._xmouse-this._x)/10; this._y += (_root._ymouse-this._y)/10; } //定位置に戻る function ReturnMe() { var x = 0; //定位置の座標 var y = 0; this._x += (x-this._x)/10; this._y += (y-this._y)/10; } //マウスオーバー時 _root.area_mc.onRollOver = function() { //マウスに追従させる _root.my_mc.onEnterFrame = MoveMe; }; //マウスアウト時 _root.area_mc.onRollOut = function() { //定位置に戻す _root.my_mc.onEnterFrame = ReturnMe; };

sazabi04
質問者

補足

ご回答ありがとうございます。 早速、ためしてみたのですが、、無反応で何も動きません。。 初心者で申し訳ございません(^_^;) 原因がわからないので。。2~3日、時間があるときに いろいろためしてみます。。 超初心者向けに補足がありましたら、よろしくお願いいたします。。

関連するQ&A

  • マウスを追いかける

    ムービークリップがマウスを追いかけるというようにしたいのですが、追いかけるムービークリップが別のシンボルの中にあると座標がずれるようで、このずれをなくしたいのですがどのようにすればよいのでしょうか? 詳しくは、シーン1にシンボル(ただの図形と追いかけてほしいムービー:mc1)を置いて、mc1に下記のスクリプトを書きました。 -------------------------------------------- onClipEvent (load) { _root.mc1.startDrag(true); x = _root._xmouse; y = _root._ymouse; } onClipEvent (enterFrame) { _x += (_root._xmouse-_x)/4; _y += (_root._ymouse-_y)/4; } --------------------------------------------

    • ベストアンサー
    • Flash
  • マウス 追従 範囲外

    マウスを追いかけるMCを以下のように設定しましたが、 MCが動いている範囲外にマウスがいるときは追いかけるのを やめにしたい場合どのように記述すればよろしいでしょうか。  onClipEvent (mouseMove) { if (_root._xmouse >左 && _root._xmouse <右) { this._x = _root._xmouse; } if (_root._ymouse >上&& _root._ymouse <下) { this._y = _root._ymouse; } } 範囲外にマウスがいるときは定位置にmcを表示させるか、 表示を消したいです。 ちなみにmcが動く範囲の指定方法はネット上から探してきました。 別の方法でもっと適した記述があれば教えてください。

  • Flashで、ナビゲーションがマウスカーソルに追従し、カーソルに近づくと止まるボタン

    FlashのActionScriptについての質問です。 参考書を見ながらやっていて、 ナビゲーションがマウスカーソルに追従し、カーソルに近づくと止まるボタンを作りたいのですが、 マウスに追従してきません。 _rootタイムラインのムービークリップctr_mcsetに、 onClipEvent (enterFrame) { if (_root.woksctr == true) { this._x += (_parent._xmouse-this._x)/5; this._y += (_parent._ymouse-this._y)/5; } } を記述しました。 ctr_mcsetのタイムラインに、触れると追従が止まるボタンの領域として、 cl_bn02を配置して、クリッカブル表示されないように on (release) { } onClipEvent (load) { this.useHandCursor = false; } を記述しました。 その、cl_bn02のタイムラインに、_up,_over,_downラベルをつくり、 _upには、 stop(); this.hitArea = hit; this.hit._visible = false; _root.worksctr = true; _over,_downには、 _root.worksctr = false; と記述しました。 参考書の通りだと、これでマウスカーソルにナビゲーションが近づくと静止し、 離れると追従するらしいのですが、止まったまま追従してきません。 if (_root.woksctr == true)の、==を、=だけにすると、追従はしてきますが、 ムービークリップの中心点にマウスカーソルがいつもいってしまって、 左右のボタンがうまく押せません。 どこか記述がヘンなのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • マウスカーソルについてくる前に左上にいってしまう。

    こんにちは。 マウスカーソルについてくるムービークリップをマスクにして使用したいため、 目的のムービークリップに onClipEvent (enterFrame) { _x += _xmouse/3; _y += _ymouse/3; } というActionScriptを入れました。 きちんと思うように動くのですが、 読み込んだあと、一瞬まず左上に移動してしまいます。 マウスカーソルをうごかして、はじめてマウスカーソルに近づいてきます。 左上に移動してしまうのは格好が悪いので、配置した位置からマウスカーソルに近づいて欲しいのですが、色々調べてもその説明がありません。 どうかよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリップの領域をシェイプの形状にしたい

    よろしくお願い致します。 ムービークリップにマウスオーバーするとムービークリップが再生し、マウスアウトすると逆再生するというものを作っています。 ここで、ムービークリップのマウスオーバーする領域を矩形ではなく、見たままの形(シェイプの形状)だけに指定するにはどうすれば良いでしょうか? 現在の状況は、マウスオーバーさせるムービークリップに onClipEvent (load) { this.stop(); } onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse, _root._ymouse, false)) { this.nextFrame(); } else { this.prevFrame(); } } のアクションを書いています。 自分なりに調べたところ、「shapeFlag?というものを使うらしい?」というのは分かったのですが、どう使えば良いのかさっぱり分かりません・・ どなたかご指導頂けないでしょうか。 どうぞよろしくお願い致します。

    • ベストアンサー
    • Flash
  • 外部swfを読み込んだときだけMouse.hide();させたい。

    よろしくお願いします。 ドキュメント上に空のムービークリップを作り、その中の入れ子のボタンを押すと外部swfを表示するflashを作ったのですが、その外部swf、仮にhoge.swfを読みこんで、そのときだけマウスを隠して(ムービークリップをマウス代わりに)、ボタンで違う外部swf、仮にogeをよみこんだときはマウスを表示させることは可能でしょうか? onClipEvent (enterFrame) { this._x=_root._xmouse; this._y=_root._ymouse; Mouse.hide(); } 上記のスクリプトでマウスを消すと、ogeを読み込んでもマウスが消えっぱなしです。 多分if文を使って if (hogeを読み込んだら){ this._x = _root._xmouse; this._y = _root._ymouse; Mouse.hide(); } //そうでなかったら、 else { Mouse.show(); } みたいな感じなのでしょうが、うまく機能しません・・・。 ご教授お願い致します。

    • ベストアンサー
    • Flash
  • 慣性の効果がついたマウス追従

    マウス追従の効果で教えてください。 http://www.flashiroha.com/script/as8.htmlの慣性効果付加型のスクリプトは AS2.0で書かれています。 onClipEvent(load) { vx=0; vy=0 } onClipEvent(enterFrame) { vx=vx*0.65+(_root._xmouse-this._x)/a; vy=vy*0.65+(_root._ymouse-this._y)/a; this._x+=vx; this._y+=vy; } これをAS3.0で作成していますが、マウスに追従するどころか大きくステージから離れてしまいます。 どのように記述をしたらいいでしょうか。 my_mc.addEventListener(Event.ENTER_FRAME,onEnterframe); var vx ; var vy ; function onEnterframe(eventObj:Event):void{ vx= my_mc.x*0.65+(stage.mouseX-my_mc.x)/2; vy= my_mc.y*0.65+(stage.mouseY-my_mc.y)/2; my_mc.x+=vx; my_mc.y+=vy; trace(my_mc.x); }

    • ベストアンサー
    • Flash
  • マウスの移動方向によってマウスカーソルの画像を切り替えたい

    今、マウスカーソルを(右向きの)車の画像にしています。 マウスを右方向に動かしたら、右方向の車の画像にし、逆に左方向に動かしたら左方向の車の画像に切り替える、という処理は可能でしょうか?可能である場合、どのようなスクリプトを書けばよいのでしょうか? マウスのx座標の値の増減で判断する、ということは想像できるのですが、書き方が分かりません。 右向きの車の画像のムービークリップ「car」のインスタンスには、下のスクリプトを記述しています。 onClipEvent (load) { Mouse.hide(); } onClipEvent (mouseMove) { this._x = _root._xmouse; this._y = _root._ymouse; updateAfterEvent(); } バージョンはMXです。 どうかよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 移動範囲を指定したい

    マウスを追いかけるMC1の追いかける範囲を指定したいのですがうまくいきません; 細かい指定としては↓ (1)画面の下1/5ぐらいのMC2の中にはMC1は入れない (2)マウスがMC2の中にある時はMC1はy座標は変化なし x座標はマウスを追いかける(つまり、横にしか動かない) (3)マウスがMC2から出てきたら、再びMC1はマウスを追いかける 現状としては ------------------------------------------- onClipEvent (enterFrame) { if (this.hitTest(_root.ki.kusa)){ _x += (_parent._xmouse-_x)*0.1; this._y += 0; }else{ _x += (_parent._xmouse-_x)*0.1; _y += (_parent._ymouse-_y)*0.1; } } ------------------------------------------- これでは、マウスがMC2から出てきた時に、MC1がMC2から離れないという様になってしまうのですがどうすればいいでしょうか??

  • ムービークリップがマウスカーソルを追いかけ、マウスカーソルと同じ位置に来たときにムービークリップを変えたい

    以下のようにスクリプトを書いたのですが ムービークリップがマウスカーソルと同じ位置に来ても ムービークリップがフレーム2に移動しません。 ドラゴンクエストVIIIのトップページのFlashのような 表現をしたいのですがうまくいきません。 http://www.square-enix.co.jp/dragonquest/eight/ _mc.onEnterFrame = function() { this._x += ( _root._xmouse - this._x ) / 5; if( this._x == _root._xmouse ) this._mc.gotoAndStop(2); else this._mc.gotoAndStop(1); }; どうすればこの問題を解決することができるのでしょうか。 ご存知の方がおられましたらご回答をよろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう