簡略化されたコード:どのflashイベントがmouse_upイベントを中断でき、どのように検出するのですか?
//triggered on MouseEvent.MOUSE_DOWN
private function beginDrag(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, endDrag);
stage.addEventListener(Event.DEACTIVATE, endDrag);
contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, endDrag);
}
private function drag(e:MouseEvent):void
{
//do stuff
}
private function endDrag(e:Event):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, drag);
stage.removeEventListener(MouseEvent.MOUSE_UP, endDrag);
stage.removeEventListener(Event.DEACTIVATE, endDrag);
contextMenu.removeEventListener(ContextMenuEvent.MENU_SELECT, endDrag);
}
私は私のフラッシュコード内のいくつかのクリックアンドドラッグ技術を使用しています、と私はMOUSE_UPイベントといくつかの抜け穴気づいた:それは文句を言わないトリガされ
- をマウスがまだ押されている間にコンテキストメニューがアクティブになっている場合ウィンドウが非アクティブ化されている場合、それがトリガされ文句を言わない
- (Alt + Tabキーまたは類似の)
私の質問は: おそらくMOUSE_UPイベントを中断し、予期しない動作につながることができ、他にどのようなイベント?
さらに、コンテキストメニューにリスナーを手動で追加/削除することなく、すべてコンテキストメニューのContextMenuEvent.MENU_SELECTを一般的にキャッチする方法はありますか?
どのようにドラッグしていますか?ドラッグ可能なオブジェクトをマウスでのみ移動する必要がありますか、または左のbtnを押したまま移動するとカーソルの後ろに移動しますか? imhoはほとんどの場合、 'event.buttonDown'チェック付きの' MouseEvent.MOUSE_MOVE'リスナーがベストプラクティスであるので、私は尋ねています – www0z0k
@ www0z0k明らかにあなたは私のコードを読んでいませんでした。もしできれば、私はあなたにコメントを-1与えるだろう。私はすでにドラッグの基本を持っています**問題ではありません**問題は、 'MOUSE_UP'イベントがフラッシュによって捕らえられないようないくつかの無関係なイベントが発生したときです。 – zzzzBov
答えを投稿することをお勧めします;) 'Event.MOUSE_LEAVE'は、コンテキストメニューが呼び出されたとき、左のbtnが解放されたとき、またはマウスがステージを離れたときにbtnが解放されたときに送出されます。 – www0z0k