• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マウスを追いかける)

マウスを追いかけるムービークリップの実装方法

このQ&Aのポイント
  • マウスを追いかけるムービークリップが別のシンボル内にあると座標がずれる問題が発生しました。
  • 問題を解決するために、下記のスクリプトを使って座標のずれをなくすことができます。
  • 詳細は、シーン1に配置したシンボル(ただの図形と追いかけてほしいムービークリップ:mc1)に以下のスクリプトを追加します。

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

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

結論から書きますと、  onClipEvent(enterFrame)  {   //親の中心点を基準とするマウスカーソルの座標を追いかける   _x += ( _parent._xmouse - _x ) / 4;   _y += ( _parent._ymouse - _y ) / 4;  } (↑各行頭に全角のスペースが入っています。コピーして使う場合は、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) で、いかがでしょう。 ------------------------------------------------ ムービークリップの位置を保持する _x と _y プロパティには、親の中心点を基準にした座標が入っています。 ムービークリップ mc1 が他のシンボルの中にある場合、mc1 の座標である _x と _y プロパティには、親シンボルの中心点を ( 0 , 0 ) とする座標が入ります。 一方、マウスカーソルの位置を見るには、一般に _root._xmouse と _root._ymouse プロパティが使われますが、これにはステージの左上を ( 0 , 0 ) とした座標が入っています。 この2つは座標を取る基準が違うので、基準が違うもの同士を参照して座標を決めようとすると、当然、ズレが生じます。 _xmouse と _ymouse プロパティはムービークリップであればどれでも持っているもので、ムービークリップの中心点から見たマウスカーソルの位置が保存されています。 ムービー全体(ステージ)は通常は _root という名前のムービークリップとして扱い、その中心点は左上です。 ステージに配置されているインスタンスは全て _root の子であり、その _x と _y プロパティにはステージの左上を ( 0 , 0 ) とする座標が格納されます。 つまり、_root の _xmouse と _ymouse を見るとステージの左上を基準とするマウスカーソルの位置が分かるので、ステージに配置したムービークリップがマウスカーソルを追いかけるといった作品によく利用されています。 しかし今回は、mc1 はステージに直接ではなく、あるシンボルの中に入っているため、_x と _y には親シンボル(のインスタンス)の _x と _y を基準にした座標が入っています。 あるシンボル内にある mc1 がマウスカーソルを追いかけるには、mc1 が存在するのと同じ座標系、つまり mc1 の親の中心点を基準とするマウスカーソルの座標を見て位置を決めるのが一番簡単です。 これなら同じ基準から見た座標同士なので、ズレも生じません。 _parent は親にあたる階層を指す表現です。 つまり、_parent._xmouse と _parent.ymouse を見ると、mc1 と同じ基準から見たマウスカーソルの位置が分かるというわけです。

fujitubo
質問者

お礼

DPE様返答ありがとうございますm(__)m 大変参考になりました~(^∇^) 上手く動くようになりました。 本当にありがとうございました。

関連するQ&A