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なのかの判別は、ロールオーバー/アウト時にフラグを立てて、アップ時にそれをチェックすることで対応できそうです。
ほかに方法思いついた人、教えてくだちい。