Entries

AS3メモ MouseEventについて

どうもAS2とAS3のマウスイベントのキャプチャー方法に、癖の違いがあって混乱するのでメモ。


AS3のInteractiveObject系で、マウスイベントをaddListenerする場合。

this.addEventListener(Event.MOUSE_UP, upFunct)

みたいにすればよいのだけど、この方法だとReleaseOutsideと、MouseMoveのイベントをとるのにちょっとコツがあるっぽい。 というのもMouseUpもMouseMoveもインスタンス上でロールオーバーしているときにしか発生しないみたい。

だから従来のAS2的なやり方だと、MouseMoveでドラッグとか範囲をでた判定とかが使えないっぽい。

打開さくとしては、MouseDownが起きたタイミングで「Stage」に対して、MouseMoveとMouseUpをaddListenerすることで、マウスダウン中にボタン外にマウスをドラッグしても、MouseMoveもMouseUpも取得できるようです。で、MouseUpのタイミングで、リスナーを消すと。

マウスアップがReleaseなのか、ReleaseOutsideなのかの判別は、ロールオーバー/アウト時にフラグを立てて、アップ時にそれをチェックすることで対応できそうです。

ほかに方法思いついた人、教えてくだちい。