私はMOUSE_MOVEイベントを待ち受けています。中マウスボタンを押したときにMOUSE_MOVEイベントが送信されないのはなぜですか?
中マウスボタンを押していない限り、それらは送受信されます。中ボタンが離されるまで、私はもうMOUSE_MOVEイベントを取得しません。
これはFlashの問題か、マウス/コンピュータの特定の設定(Lionのブルートゥースマイティマウス)の問題ですか?
既知の回避策はありますか?
次は、この問題を示すサンプルプロジェクトです。
左クリックしてドラッグするとマウスの移動イベントがトレースされますが、中クリックは中マウスの下と中マウスだけを表示します。
import flash.events.MouseEvent;
this.stage.addEventListener(MouseEvent.MIDDLE_MOUSE_DOWN, onMiddleMouseDown);
this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
function onMiddleMouseDown(e:MouseEvent):void {
trace("middle down");
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.stage.addEventListener(MouseEvent.MIDDLE_MOUSE_UP, onMiddleMouseUp);
}
function onMouseMove(e:MouseEvent):void {
trace("mouse move");
}
function onMiddleMouseUp(e:MouseEvent):void {
trace("middle up");
this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.stage.removeEventListener(MouseEvent.MIDDLE_MOUSE_UP, onMiddleMouseUp);
}
function onMouseDown(e:MouseEvent):void {
trace("down");
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
function onMouseUp(e:MouseEvent):void {
trace("up");
this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
UPDATE:
中央のボタンを押しているときにマウスの位置(するmouseXとmouseYのプロパティ)が更新されていないことが表示されます。私はまだ理由を知りたいのですが、これに対応する方法があるかどうか知りたいです。
あなたの設定に問題があるようです。私はあなたのコードをコピーしてテストし、MOUSE_MOVEが正しく起動し、mouseXとmouseYが正しく更新されます。かなり奇妙な。 –
ああクール、知っておいてよかった。ありがとう。私はそれがMac/Lionのことだと思っています。私はいくつかのマウスを試してみましたが、私のマウス設定で手を加えましたが、何も違いはありません。 – Cadin