2012-03-05 4 views
0

ActionScript 3을 사용하여 Flash CS5.5에서 AIR 응용 프로그램을 개발 중입니다. 사용자가 응용 프로그램 관련 기능을 위해 F1-F10 기능 키를 사용할 수 있어야합니다. F10을 제외하고 모두 훌륭하게 작동합니다. 나는 F10에 대한 keyUp과 keyDown을 감지 할 수 있지만, F10을 놓으면 응용 프로그램 메뉴가 포커스를받으며 앱은 a) F10을 다시 누르거나 b) 비 기능 키를 누를 때까지 후속 기능 키를 누른다. 이 작업은 새로운 NativeMenu를 추가했는지 여부와 관계없이 발생합니다 (앱이 없으면 좋을 것 같습니다).F10에서 AS3 AIR 응용 프로그램의 활성화 메뉴를 유지하려면 어떻게해야합니까?

하거나하는 방법이 있고,

  1. 않도록하고 F10을 누르면 포커스를 수신 메뉴 또는
  2. F10을 누르면 다시 컨텐츠에 포커스를 강제 후속 기능 키 프레스가되도록 인정 되니?

답변

1

기본 메뉴 항목에 의존하지 않고 완전히 맞춤 설정 메뉴를 만들 수 있습니다.이 상황에서해야 할 일입니다.

preventing the default event from firing에 마우스를 올려 놓을 수도 있지만 그게 작동하더라도 약간의 빈민굴/해킹 해결책입니다. 그래서 처음부터 고유 한 기본 메뉴 항목을 만들 것을 제안합니다. 기본적으로 모든 기본 메뉴 항목 ("파일", "편집"등)을 먼저 제거하고 필요에 따라 자신의 기본 항목으로 바꿔야한다는 점을 제외하고는 현재 수행중인 작업과 같습니다.

+0

+1하지만 기본이 해킹을 막지 않는다고 말하지는 않습니다. 기본 설정이 특정 위치에 배치되지 않도록 방지 ... 기본 동작을 방지합니다. lol –

+0

내 응용 프로그램에 메뉴가 전혀 없습니다. 문제는 F10을 눌렀다 놓으면 응용 프로그램이 포커스를 메뉴로 이동한다는 것입니다. 이 동작은 AIR NativeMenu와 메뉴 항목을 추가했는지 여부와 관계없이 동일합니다. 따라서 앱의 상단 가장자리에 메뉴가 표시되지 않는 경우에도 동작은 동일합니다. 다른 기능 키는 포커스가 메뉴에서 벗어날 때까지 등록되지 않습니다 (F10을 다시 누르거나 다른 비 기능 키를 누름). preventDefault를 시도했지만 AIR에서는 keyUp 이벤트를 취소 할 수 없으며 keyUp에서 질문의 F10 동작이 발생합니다. – nnowatzk

+0

가능한 가장 단순한 예 : 'stage.addEventListener (KeyboardEvent.KEY_UP, fl_KeyboardUpHandler); 함수 fl_KeyboardUpHandler (이벤트 : KeyboardEvent) : void { keyText.text = ("key UP"+ event.keyCode); } ' 스테이지의'keyText '라는 동적 텍스트 상자에서 이것을 AS 3, AIR 2.3 앱으로 테스트합니다. F10 (키 코드 121)을 누르면 다른 기능 키 누름이 기능 키가 아닌 (또는 F10을 다시 누를 때까지) 등록되지 않습니다. – nnowatzk

관련 문제