電子書籍の厳選無料作品が豊富!

ムービー上の特定の位置にマウスが載った場合、
特定のMCの動きを制限したいのですが、
どの場合、「ムービー上の特定の位置にマウスが載っているかどうか」を判断するにはどのようなスクリプトを書けばいいでしょうか。

<具体例>
y座標範囲0~100 で、x座標範囲0~600
の範囲内にあるときだけ、mc_birdに、function fly()
を実行させたい。

<_rootのフレームアクション>
this.onEnterFrame = function(){
※ここに条件分岐等を入れればいいと思うのですが、
何を書けばいいのかわかりません。
}

宜しくお願いします。

A 回答 (1件)

ステージ上の特定の領域(四角形)であれば、マウスカーソルの位置を見て、その座標が範囲内にあるかどうかで判断してはいかがでしょう。


_root._xmouse と _root._ymouse プロパティを見ると、ステージの左上を基準とするマウスカーソルの座標を取得できます。この座標が、( 0 , 0 ) - ( 600 , 100 )の範囲内にあるかどうかを判断するスクリプトは、

 if ( _root._xmouse >= 0 && _root._xmouse <= 600 &&
    _root._ymouse >= 0 && _root._ymouse <= 100 )
 {
  ・・・
 }

このようになります。
(インデントの都合上、スクリプトの一部に全角のスペースが入っています。コピーして使う時は、半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)

上記の方法では、指定の範囲内にカーソルがある間、常に if 文が実行されてしまいます。
指定の範囲内にカーソルが入った時1度だけ処理をさせたい場合は、ヒット領域用のムービークリップを作り、アルファを0にしてステージに置いておき、このムービークリップでの RollOver イベントを利用すると簡単です。
ムービークリップを利用すると、四角形だけでなく、円や不定形などの複雑な形のヒット領域を作れるという利点もあります。
仮に、ヒット領域用の hit_area というムービークリップがあるとすると、

 hit_area.onRollOver = function ()
 {
  ・・・
 };

このような処理をフレームアクションで定義します。
なお、RollOver イベントを利用するアクションを定義すると、該当するムービークリップの上にカーソルが乗った時に手のカーソルに変わってしまいますので、load イベントを利用して、予め

 hit_area.useHandCursor = false;

というアクションを実行しておくといいでしょう。ムービークリップの上にカーソルが乗っても、手のカーソルに変わらなくなります。
    • good
    • 0
この回答へのお礼

ありがとうございます。

座標をうまく取得できてなんとか思い通りの動作を実現することができました。

サンプルスクリプトまでご提示していただきまして、
ありがとうございました。

感謝いたします。

お礼日時:2004/03/08 11:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!