2012-03-08 2 views
3

MOUSE_MOVE 이벤트를 수신하고 있습니다.마우스 가운데 버튼을 눌렀을 때 MOUSE_MOVE 이벤트가 전송되지 않는 이유는 무엇입니까?

마우스 가운데 버튼을 누르지 않으면 제대로 보내고받을 수 있습니다. 가운데 단추를 놓을 때까지 MOUSE_MOVE 이벤트를 더 이상 얻지 못합니다.

Flash 또는 내 마우스/컴퓨터 구성 (블루투스 Mighty Mouse on 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과 쥐색의 속성) 업데이트되지 않는 것으로 보인다
. 나는 아직도 이유를 알고 싶거나 이것에 대한 해결 방법이 있는지 알고 싶습니다.

+0

보인다. 난 그냥 당신의 코드를 복사하고 MOUSE_MOVE가 올바르게 발생하고 mouseX와 mouseY가 올바르게 업데이트되도록 코드를 붙여 넣었다. 꽤 이상합니다. –

+0

아, 멋지다. 감사. 나는 그것이 Mac/Lion 일인 것 같아. 몇 가지 다른 마우스를 시도해 보았고 마우스 설정으로 손을 봤는데 아무런 차이가없는 것 같습니다. – Cadin

답변

0

보통 짐작할 수 있지만 대부분 마우스 오른쪽 버튼은 대부분의 드라이버에서 스크롤 할 수 있도록 설정되어 있습니다. 아마도 마우스 이동 메시지 대신 버튼을 누르는 동안 스크롤 메시지가 표시됩니다.

+0

그래, 그렇게 될 수있어. 마우스 설정에서 스크롤을 해제하려고했지만 아무런 효과가 없었습니다. – Cadin

0

MOUSE_MOVE 이벤트가 꼭 필요한가요? 대부분의 경우 ENTER_FRAME 이벤트로 대체 할 수 있습니다.

addEventListener(Event.ENTER_FRAME, eFrame); 
private function eFrame(event:Event):void 
{ 
    trace(mouseX,mouseY); 
} 
+0

제안 해 주셔서 감사합니다. 대신 ENTER_FRAME을 사용하도록 프로그램을 수정하려고했습니다. 불행히도, 중간 버튼이 눌려지면 mouseX와 mouseY가 업데이트되지 않는 것 같습니다 (MOUSE_MOVE가 실행되지 않는 이유를 설명). 이것이 일반 플래시이거나 내 설정에만 해당되는지 확실하지 않습니다. – Cadin

관련 문제