2014-11-26 3 views
1

OS X 스프라이트 키트 프로젝트에서 키 이벤트를 수신 대기하는 keyDown(_:)keyUp(_:) 메서드를 구현할 수 있습니다. 어떤 키를 눌렀는지 어떻게 알 수 있습니까? (위쪽 화살표, A, 2, 스페이스 등). 알파벳 키에 characters 속성을 사용할 수 있지만 화살표 또는 스페이스 키를 확인하려면 어떻게해야합니까? keyCode 속성을 사용할 수 있습니까? 키보드/Mac 유형과 다를 수 있습니다.SpriteKit OS X 어떤 키를 눌렀는지 가져 오기

+2

예, keyCode 만 사용하고 keyCode 만 사용하십시오. 이렇게하면 사용자가 키보드의 해당 키에 인쇄 된 문자와 상관없이 키보드의 동일한 버튼을 눌러야합니다. – LearnCocos2D

답변

0

게임에 따라 다릅니다. 캐릭터가 의미가있는 게임 (예 : a = 공격, p = 일시 중지, g = 수류탄 수류)을 개발중인 경우 theEvent.characters을 처리하는 것이 좋습니다. 키 코드를 사용하고 사용자가 다른 키보드 레이아웃 (예 : Dvorak, Colmak)을 사용하면 사용자는 키를 QWERTY 키보드 레이아웃으로 정신적으로 다시 매핑해야합니다.

다음은 theEvent.characters의 문자를 UTF-16 표현으로 변환하는 방법의 예입니다. 위쪽/아래쪽 화살표와 같은 특수 문자가 눌려 졌는지 감지하는 것이 유용합니다. 물질의 키의 위치 (예를 들어, W는 최대 = A는 = 좌, D가 = 오른쪽, S는 = 아래), 하드웨어에 독립적 인 키 코드 등록 정보를 사용하여보다 합리적 게임의 다른 유형

override func keyDown(theEvent:NSEvent) { 
    for codeUnit in theEvent.characters!.utf16 { 
     println ("Keypressed: \(codeUnit)") 
    } 
} 

.

+0

게임 앱에서는 항상 문자가 아닌 keyCode를 사용해야합니다. 그렇지 않으면 다른 로케일의 사용자가 Shift 또는 Ctrl을 눌러 다른 로케일의 단일 키 누르기 인 문자를 작성해야 할 수 있습니다. https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/#//apple_ref/occ/instm/NSEvent/keyCode – LearnCocos2D

관련 문제