그래서 여기 내 설정이다 :AS3의 KeyboardEvents
내 문서 클래스가 Main.as (가 MovieClip을 확장)이다가. 다음 코드는 내 Main.as에 있습니다. 내 클래스 정의에 모든 변수를 선언 한
: 생성자
private var holder:MovieClip;
private var leftButton:SimpleButton;
private var rightButton:SimpleButton;
...
holder = new MovieClip();
addChild(holder);
holder.addEventListener(KeyboardEvent.KEY_UP, handleKeyboardEvent);
leftButton = new Arrow();
rightButton = new Arrow();
holder.addChild(leftButton);
holder.addChild(rightButton);
leftButton.x = 50;
leftButton.rotation = 180;
rightButton.x = 150;
leftButton.y = rightButton.y = 50;
leftButton.addEventListener(MouseEvent.CLICK, handlePaging);
rightButton.addEventListener(MouseEvent.CLICK, handlePaging);
... 생성자의 외부 ...
public function handleKeyboardEvent (e:KeyboardEvent) {
trace("got a keyboard event");
trace("e.charCode : " + e.charCode);
trace("e.keyCode : " + e.keyCode);
switch (e.keyCode) {
case 37: //left arrow
showPreviousMoment();
break;
case 39: //right arrow
showNextMoment();
break;
}
}
두 개의 버튼은 내가 가지고있는 Arrow 무비 클립의 인스턴스입니다. Arrow 무비 클립에는 그래픽이 들어 있습니다 (기본 클래스는 flash.display.SimpleButton이라는 속성 대화 상자에서 나타납니다).
사용자가 화면 화살표를 누르거나 키보드 화살표 키를 눌러 앞으로 및 뒤로 이동할 수 있기를 원합니다.
그래서 ... 동영상을 테스트하거나 앱으로 게시 할 때 왼쪽 및 오른쪽 키보드 키를 눌러도 아무런 변화가 없습니다. 그러나 ... 화면 화살표를 클릭 한 후 키보드 이벤트가 나타납니다 !!! 처음에 키보드 이벤트가 수신되지 않는 이유는 무엇입니까? 화면 버튼을 클릭하면 '보유자'가 이벤트를 받기 시작하는 이유는 무엇입니까?
UPDATE는
또한 바로이 '홀더'인스턴스와 청취자를 추가하는 경우를 제외하고 내 모든 코드를 주석 처리했습니다. 홀더에서 KeyboardEvents를들을 수 없습니다.
UPDATE ... 답변
그래서 나는 내가 KeyboardEvent입니다들을 전체적으로하려는 경우, 나는 청취자로서 무대를 등록해야합니다 것을 알아 냈다. 그래서 이것은 속임수를 썼는지 :
stage.addEventListener(KeyboardEvent.KEY_UP, handleKeyboardEvent);
콜린 모악의 책에서 정보 : 응용 프로그램 전체 명령 은 일반적으로 플레이어의 플래시 에 등록 청취자에 의해, 전 세계적으로 처리되는 트리거
키보드 입력 이벤트 스테이지 인스턴스. 반대로 특정 인터페이스 요소 응답 을 트리거하는 키보드 입력 이벤트는 일반적으로 에 현재 키보드 포커스가있는 객체에 등록 된 수신기 인 에 의해 처리됩니다.
내 초기 버전에서 화면상의 화살표 버튼을 클릭했을 때 어떻게 든 키보드 초점을 '홀더'에 부여했습니다.
플래시 무비에서 아무 것도 클릭하지 않고 키보드 이벤트가 작동하도록하는 화살표를 클릭 했습니까? 왜냐하면 키보드 이벤트가 작동하기 위해 플래시 창에 집중해야 할 필요가있는 것 같습니다. 플래시 무비 (화살표가 아님)에서 다른 것을 클릭하고 키보드 화살표를 클릭하여 테스트 해보십시오. 이것이 작동하면 코드에 아무런 문제가 없으며 모든 것이 정상적으로 작동한다는 것을 의미합니다. – SimplyZ
포커스 문제가 아니라는 점을 깜빡하고 있습니다. 나는 영화 창의 다른 부분을 클릭했는데 키를 '활성화'하지 않습니다. 화면상의 버튼을 클릭 한 후에 만 ... 그러면 키가 활성화됩니다. – milesmeow
handlePaging 함수를 질문에 추가 할 수 있습니까? 어쩌면 키보드 이벤트를 활성화시키는 뭔가가있을 수 있습니다. (단지 야생 추측) – SimplyZ