- ベストアンサー
hitTestについて教えてください
var hit = mc.hitTest(_root._xmouse, _root._ymouse); if (hit) { ・・・・ } クリップ上にマウスオーバーしている時に、if分の処理を行うコードを上記のように書きました。 マウスがクリップにマウスオーバーした状態で、ステージ外へと移動するとif分が実行され続けます。 マウスがステージ外へ出たことを知ることは可能でしょうか教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
マウスカーソルがステージ外に出た場合、 ステージ外に出る直前の座標値が保持されたままその値は変わらなくなるため、 ActionScript2.0 以下の Mouseクラス などでは、普通は検知できません。 しかし、 ボタン もしくは ムービークリップ の、 on(rollOut) または ○○.onRollOut=function(){} を使用すると 検知することができます。 他のコミュニティで、すみませんが↓。 「なぜなにGAC-二つのMCの距離が近づくとアニメーションをスタートする」 http://www.gac.jp/article/index.php?stats=question&category=19&id=22308&command=msg ※→「回答003のリンク先のサンプル」 上のサンプルでは、 背景(haikei)はムービークリップになっていて、 _root.haikei.onRollOut = function() { mouse_flag = false; kao._x = -1000; }; で、マウスがステージ外にあるときは、 フラグをfalseにして代替カーソル(顔:kao)を非表示にしています。 面倒ですが、ムービー全体をこのことを基準にして作成する必要があります。 つまり、普通にボタンなどの配置はできません。 もしボタンなどを配置する場合は、 このステージ外検知用ムービークリップのロールアウトを常に意識して作成&コーディングする必要があります。 --------- ActionScript3.0 になると、 Mouse クラス の Event.MOUSE_LEAVE というものが使えるらしく、 これでマウスがステージ外へ出たことを検知できるようです(私は未検証)。 「Mouse - ActionScript 3.0 コンポーネントリファレンスガイド」 http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/ui/Mouse.html > 6.タイプが MOUSE_LEAVE の 4 番目のイベントリスナーが、関連する > mouseLeaveHandler() メソッドと共に追加されます。このメソッドは、 > ポインタがステージを離れると呼び出され、 > mouseOutHandler() に新しい mouseMove リスナーオブジェクトを渡します。 > これにより、ポインタが実質的に削除されるため、 > ポインタがステージ上に残ることはありません。
お礼
ご回答いただきありがとうございます。 たいへん詳しい説明、ありがとうございます。 サンプルをご紹介いただきありがとうございます。 リンク先のサンプルとても勉強になります。 ステージ全体にムービークリップを配置し、onRollOut/onRollOverでステージ上にマウスがあるか判定する方法はとても分かりやすくて参考になります。 ありがとうございます。