2011-01-15 7 views
0

Sprite 클래스는 MOUSE_DOWN 이벤트 이후 (클릭 완료 전에) 마우스를 클릭 할 때 포커스를 잃지 않습니다.Flash Sprite가 MOUSE_DOWN 이벤트에 포커스를 잃습니다.

아이들에 대해서는 mouseEnabled을 false로 설정하고 변경하지 않았습니다. FOCUS_OUT에 대한 리스너를 추가하고 FocusEvent.relatedObject 속성이 NULL이라는 사실을 알게되었습니다. 이는 혼란 스럽습니다. 즉, 새로운 포커스 대상이 없다는 것을 의미하지 않습니다.

[FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=null shiftKey=false keyCode=0] 
[MouseEvent type="mouseDown" bubbles=true cancelable=false eventPhase=2 localX=355 localY=362 stageX=360 stageY=367 relatedObject=null ctrlKey=false altKey=false shiftKey=false buttonDown=true delta=0]) 
[MouseEvent type="click" bubbles=true cancelable=false eventPhase=2 localX=355 localY=362 stageX=360 stageY=367 relatedObject=null ctrlKey=false altKey=false shiftKey=false buttonDown=false delta=0] 
+0

이 간단한 예를 게시 할 수 있습니까? – greggreg

+0

뭐가 좋아? 그것은 파일의 전체 잔뜩 내 애플 리케이션의 일부입니다. 'Sprite'는 마스크를 설정하는 것 외에는 특별한 일을하지 않습니다. –

+0

이 아마도 당신의 무대입니다. stage.mouseEnabled = false 일 수도 있습니다. – jpea

답변

2

아이들에 스프라이트 대신 mouseEnabled = false;mouseChildren = false;을 설정해보십시오 : 내가 클릭으로

을 추적하여 내가 할 이벤트의 정확한 순서. 스프라이트의 자식이 mouseEnabledfalse으로 설정된 경우 스프라이트에 포함 된 표시 요소는 클릭 할 수 없습니다. 단, 자체 그래픽에 직접 그려진 모양은 제외됩니다. 그런 다음 실제로 아이들과 무대를 통해 "클릭"합니다.

[편집]가 :

나는 당신의 문제를 재현하기위한 테스트를 만들었습니다. 당신 말이 맞습니다. 스프라이트를 클릭 할 때 초점이 맞춰지기를 기대하지만, 초점은 신비하게도 잃어 버립니다. 무비 클립에는 동일하지만 TextField에는 해당하지 않습니다. 그건있을 수 있지만 비실, 사용자 정의 이는 MouseDown 처리기를 추가하여 해결할 수 있습니다

private function onMouseDown (ev:Event) : void { 
    if (stage.focus != sprite) stage.focus = sprite; 
} 
+0

흠. 나는 그것을 시도했지만 변화가 없었다. Sprite는 참조 용으로 Sprite의 전체 크기를 하나의 사각형으로 그려서 클릭하지만 그게 전부입니다 - 자식을 추가 할 수 없도록 설정 했으므로 배경 rect의 맨 위에있는 무언가를 클릭하기 만하면됩니다. Sprite.graphics.drawRectangle –

+0

이것을 재현 해보고 다시 시도하겠습니다. – weltraumpirat

+0

마침내이 문제를 테스트하고 답을 수정했습니다. – weltraumpirat

0

을 당신이 tabEnabled = true;을 설정해야 어떤 InteractiveObject을 확장합니다. 이것은 당신이 클릭했을 때 개체 이득에 초점을 맞출 것입니다. tabEnabled의이 거짓 경우,하지만 의 mouseChildren은 다음 것은 Stage.focus null로 설정됩니다 사실입니다 :

하지만주의해야합니다.

관련 문제