반복되는 움직임 이벤트가 아닌 상태로 프레스를 추적합니다.
keydown에서 관련 키를 Set에 추가합니다. 업데이트 단계에서 해당 세트를 읽어 움직임을 결정합니다. 키업 시 제거하세요. 이렇게 하면 운영 체제 키 반복 이벤트를 게임의 이동 시계로 처리하는 것을 방지할 수 있습니다. 또한 단일 충전 사격과 같이 작업이 한 번만 시작되어야 하는 경우 이미 누르고 있는 키에 대한 두 번째 키다운을 무시합니다. MDN에서는 키를 누르고 있으면 반복되는 키다운 이벤트가 생성되고 KeyboardEvent.repeat는 지원되는 브라우저에서 이러한 반복되는 이벤트를 식별할 수 있다고 설명합니다.
게임 컨트롤로 간주되는 키를 선택하고 텍스트 필드는 그대로 둡니다. 프롬프트 또는 이름 입력 필드에 포커스가 있는 경우 이동 핸들러는 동일한 문자를 사용해서는 안 됩니다. 실제로 해당 동작이 필요한 컨트롤에 대해서만 페이지 스크롤과 같은 브라우저 기본값을 방지하고 플레이어가 게임 영역을 나갈 때 정상적인 페이지 동작을 복원합니다.
중단 및 상태 변경 시 세트 지우기
창이 흐려지거나, 문서가 숨겨지거나, 일시 중지 오버레이가 제어권을 가지거나, 실행이 재설정되면 보류된 입력이 지워집니다. visiblechange 핸들러는 document.hidden을 확인하고 그것이 true가 되면 세트를 지울 수 있습니다. 모든 프레임이나 포인터 이동 시 맹목적으로 지우지 마십시오. 키업이 도착하지 않을 수 있는 중단과 삭제를 연결합니다. 이전 동작을 자동으로 다시 시작하는 대신 게임을 다시 시작한 후 새로운 키다운을 요구하도록 만드세요.
중단 경로 재현
왼쪽을 누르고 탭을 전환하고, 점프를 누른 채 메뉴를 열고, 다시 시작하는 동안 방향을 누르세요. 플레이로 돌아올 때 의도적으로 다시 누를 때까지 캐릭터가 가만히 있는지 확인합니다. 오른쪽 + 점프와 같은 두 개의 동시 키를 사용하여 반복하고 한 키를 지워도 다른 키가 잠겨 있지 않은지 확인하십시오. 게임 컨트롤과 텍스트 입력 간의 키보드 포커스 변경을 포함합니다.
브라우저 게임에서 키가 눌리지 않도록 방지 관련 질문
키를 놓은 후에도 키가 그대로 유지되는 이유는 무엇입니까?
포커스가 변경되거나 오버레이가 제어권을 갖게 되면 게임이 일치하는 키업을 수신하거나 처리하지 못할 수 있습니다. 이러한 중단 경로에서 보류 상태를 재설정하면 플레이어에게 깔끔한 재개가 제공됩니다.
키 반복이 캐릭터 움직임을 제어해야 합니까?
연속 동작의 경우 유지 상태를 추적하고 게임 루프에서 동작을 업데이트합니다. 반복은 작업이 한 번 발생해야 하는 초기 누름과 반복되는 키다운 이벤트를 구별하는 데 더 유용합니다.
추가 읽을거리
오래된 정보를 발견하셨나요? 수정 사항 제보