4 개의 동시 키를 사용하는 게임을하고 있습니다. 키가 빠르게 눌려지면 프레임 속도가 크게 느려지는 것을 제외하고는 모두 잘 작동합니다 (키 중 하나만 망치면 프레임 속도를 절반으로 줄일 수 있습니다).키보드 수신기가 내 프레임을 죽이고 있습니다
처음에는 키 누르기가 트리거하는 메서드에 너무 많은 작업이 있다고 가정했지만 메서드에서 코드를 완전히 제거하면 여전히 속도가 저하됩니다.
이전에이 문제를 겪은 사람이 있습니까? keypress는 키를 누르고있는 곳이기 때문에 매 프레임마다 메서드 호출을 반복적으로 실행합니다. 그러나 이것은 많은 용도로 사용하기에 꽤 표준 적이며 이전에는 한번도 경험하지 못했습니다.
편집 : 설명.
case ONE: pressing1 = true; break;
는 ENTER_FRAME있다 : 다음과 같은 다섯 줄이 들어있는 하나의 스위치 문이있는 메소드를 호출
stage.addEventListener(KeyboardEvent.KEY_DOWN, menuKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, menuKeyUp);
: 은 구조적으로, 무대에 부착 된 KEY_DOWN 및 KEY_UP 리스너있다 부울 플래그 중 하나라도 true인지 확인하고 문자 이동을 처리하는 이벤트입니다. 이 계산은 키 누름에 관계없이 수행됩니다 (즉, 키를 놓아도 중력은 여전히 효과가 있음). 이것은 60fps를 쉽게 유지합니다.
문자 그대로 키를 눌렀다 놓은 바로 그 순간에 거의 눈에 띄지 않는 프레임 드롭이 있습니다. 반복적으로 키를 누르면 프레임 드롭이 더 나 빠지게됩니다. 키를 누른 채로 두 번째 프레임이 떨어지는 경우를 제외하고 키를 누르고 있으면 프레임 속도가 종료되지 않습니다. 그 후 게임은 정상적으로 진행됩니다. 열쇠를 놓아두면 작은 장애가 생기고 프레임 속도는 정상으로 돌아갑니다.
EDIT 2 - 프레임 율 검사기를 추가하여 프레임 속도에 정확히 무엇이 발생했는지 확인할 수있었습니다. 흥미롭게도, 내가 키를 매우 빠르게 눌러도 정확히 30fps보다 낮게 만들 수는 없습니다. Flash Player와 관련하여 여기에 제한 사항이 있습니까?
코드의 일부를 표시하지 않는 한 실제로 어떤 일이 일어나는지 알 수있는 방법이 없습니다. 리스너를 추가하는 위치와 트리거되었을 때 수행 할 작업입니다. – weltraumpirat
내 질문을 명확히하겠습니다. –
키 스트로크 당 두 건의 함수 호출이 될 것입니다 ... 나는 그 모든 것을 다 커버한다고 생각하지 않습니까?"매 프레임마다 메서드 호출 발생"은 어떻습니까? – weltraumpirat