- ベストアンサー
マウスアウトしているのに、マウスオーバーのままになってしまいます。
よろしくお願いいたします。 ↓このようなものを作っています。(実際に参考にしているサンプルです。) http://www.oshige.com/flash/mx/swf17/divide_x.html スクリプトは --------------------------------- this.init(); this.onEnterFrame = function() { if (base.hitTest(_root._xmouse, _root._ymouse, false)) { this.rollover(); } else { this.rollout(); } this.resize(); this.setalpha(); }; 以下、function init、function rollout、function rollover、function resize、function setalphaが続きます。 --------------------------------- 最下層のレイヤーに「base」という名前のムービークリップを、ドキュメントと同じサイズ、x=0、y=0で配置。 その上に実際に動かしたいムービークリップが乗っていて、「base」にマウスオーバーしている時にそれぞれのムービークリップの動きをコントロールするというものです。 ですが、マウスを速く動かした時などに、baseからマウスアウトしているにも関わらず、マウスオーバーの状態のままになってしまいます。 色々試してみたところ、実際にbaseやムービークリップが乗っているサイズよりもドキュメントのサイズをかなり大きく取ると解消されたのですが、(サンプルでもそのようになっていました)それではページデザイン上問題があるので・・ スクリプトでどうにかできるものでしょうか? どうぞよろしくお願いいたします。 全然意味が分からない説明になっているかもしれません。不明な点がありましたらご指摘ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
FLASH ActionScriptスーパーサンプル集 http://www.oshige.com/flash/mx/ のページの下の方にある 特別サンプル: というのをDLして試してみたのですが, 質問者さまが書かれているスクリプトの this.onEnterFrame = function() { if (base.hitTest(_root._xmouse, _root._ymouse, false)) { の部分の this.onEnterFrame = function() { if (base2.hitTest(_root._xmouse, _root._ymouse, false)) { ↑ココ を base2 に変えて,base というMCが置いてあるレイヤーの上にもう1つレイヤーを作って ひとまわり小さい base2 というインスタンス名のMCを置いたところ写真のまわりにヒットしない領域ができてうまく行きました。こんな感じ↓。 ┌base ↓┌base2 □□↓□□□□□□□□□□□□□□□□□□□□ □■■■■■■■■■■■■■■■■■■■■■□ □■■■■■■■■■■■■■■■■■■■■■□ □■■■■■■■■■■■■■■■■■■■■■□ □□□□□□□□□□□□□□□□□□□□□□□ こうすると,写真の縁ではマウスがロールアウトしたようにはなってしまいますが, ステージ外に出ても,一応ロールアウト領域をマウスが通るので,なんとかなります。 簡単にするにはこんな感じでどうでしょうか。
その他の回答 (1)
- gunkiti
- ベストアンサー率0% (0/1)
hitTest(_root._xmouse,_root._ymouse,true) はhitTestがtrueのまま直接ステージ外に出るとtrueのままで、ムービークリップからマウスが離れるのを感知できません。そのため、サンプルでもドキュメントのサイズを実際に表現したい範囲より大きくしているのです。そうすることでマウスがムービークリップから離れるのを感知するのです。
お礼
ご回答ありがとうございます。 実際に表現したい範囲より、ドキュメントのサイズを5ピクセルずつ大きくしたりしてみたのですが、その程度ではロールアウトを感知してくれないようでした・・・(涙)かなり余白を大きくとらないといけないみたいですね。 ステージ外に出たかどうかを厳密に判定してくれるスクリプトがないかと思ったのですが、そんなものはないのでしょうか・・・
お礼
ご回答ありがとうございます。 実際に試してみて下さったのですね。お手数をかけてすいませんでした。 教えて頂いた方法を試してみたら、随分ましになりました。ありがとうございます。 それでも、時々ロールアウトを感知してくれない時があるのですが、これはもう仕様上仕方がない事なのでしょうか・・・。