2011-10-25 5 views
1

두 개의 버튼이 있습니다. 각 버튼의 폭은 화면의 너비와 스테이지의 전체 높이 모두입니다. 한 버튼은 화면의 왼쪽에, 다른 버튼은 오른쪽에 있습니다. 단추를 눌렀다 놓을 때 둘 다에 대한 eventlisteners 있습니다.
내 문제는 하나의 버튼을 클릭하고 다른면으로 드래그하면 해당 이벤트는 마우스가 풀리지 않는다는 것입니다.
예를 들어 오른쪽 버튼을 누르면 캐릭터가 날아 와야합니다. 마우스를 클릭하면 왼쪽 버튼으로 드래그하면 캐릭터가 계속 날아갑니다. 나는 이것이 마우스 오른쪽 버튼을 감지 할 수 없기 때문에 이것이 바로 버튼 모양 때문이라고 생각합니다. 그 주위에 어떤 방법이 있습니까?as3의 버튼에 문제가 있습니다.

답변

0

MouseEvent.MOUSE_OUT

도를 고려하십시오.

끌기를 시작하면 (MOUSE_DOWN) isCurrentlyDragging 부울을 true로 설정합니다 (물론 이벤트 처리기 함수 외부에서 정의 됨). 현재 드래그중인 경우 MOUSE_OUT에서 MOUSE_UP으로 처리하도록 결정합니다.

MOUSE_UP 및 MOUSE_OUT 집합에서 isCurrentlyDragging = false;

0

이것은 AS2에서 쉽게 감지 할 수 있었지만 AS3에서 (어떤 이유로) 제거했습니다.

내가 겪을 수있는 일은 글로벌 mouseUp-listener를 추가하는 것입니다.

stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); 
function mouseUpHandler(e:Event) { 
    if(_clickedObject) _clickedObject.dispatchEvent(new Event("releasedOutsideEvent")); 
} 

그리고

는 내 MOUSE_DOWN 핸들러에서 나는
_clickedObject = e.target; 

과 MOUSE_UP 처리기 같은

_clickeObject = null; 

또는 뭔가

을 추가합니다. 거기에 버그 또는 두 가지가있을 수 있지만 작동합니다.

관련 문제