2010-07-30 5 views
0

저는 MovieClip을 사용하여 버튼을 만드는 중입니다. 나는 다음과 같은 이벤트를 사용하고 있습니다 :actionscript 3.0에서 초점이 맞지 않아도 버튼을 어떻게 얻을 수 있습니까?

this.addEventListener(MouseEvent.CLICK,OnClick); 
this.addEventListener(MouseEvent.ROLL_OVER,OnButtonRollOver); 
this.addEventListener(MouseEvent.ROLL_OUT,OnButtonRollOut); 
this.addEventListener(MouseEvent.MOUSE_DOWN,OnMouseDown); 
this.addEventListener(MouseEvent.MOUSE_UP,OnMouseUp); 

모든 내가 버튼을 클릭 할 때를 제외하고 잘 작동 [마우스 버튼을 해제하지 않고] 나는 버튼의 초점이 마우스를 드래그 한 후 나는 마우스를 놓습니다 단추 OnMouseUp 이벤트가 호출되지 않습니다.

어떻게 해결할 수 있습니까? 감사합니다. Y_Y. 당신의 OnMouseDown 핸들러 내부

+0

mouse_down 및 mouse_up에서 별도의 동작이 필요합니까? 하나의 이벤트 또는 다른 이벤트를 사용하여 문제를 회피 할 수 있습니까? –

답변

2

추가 할 수 있습니다 당신이 원하는 MouseEvent.MOUSE_UP 이벤트 얻을 수 있도록 다음이 확실 핸들러를 만들기 위해 몇 가지 추가 작업을해야 할 것이다 의미 물론

private function OnMouseDown(e:MouseEvent):void 
{ 
    stage.addEventListener(MouseEvent.MOUSE_UP, onStageMouseUp); 
} 

private function onStageMouseUp(e:MouseEvent):void 
{ 
    stage.removeEventListener(MouseEvent.MOUSE_UP, onStageMouseUp); 
    // handle mouse up here 
} 

은 추가되고있다/적절한 제거. 설명하는 시나리오가 발생하고 핸들러가 버튼 자체의 범위 밖에 있다고 가정 할 때 어떤 버튼이 눌 렸는지도 알아야 할 경우 OnMouseDown 핸들러에서 대상 버튼에 대한 참조를 캐시 할 수 있습니다.

관련 문제