2017-12-20 7 views
1

Mac 용 Spritekit 게임이 있습니다. 일반 Mac 응용 프로그램과 마찬가지로 메뉴에 NSMenuItems가 포함되어 있습니다. 이제 그 문제가 있습니다. 마우스로 메뉴에서 작업을 선택하면 Spritekit 게임이 즉시 실행되고 후속 애니메이션의 일부가 누락됩니다.MacOS : NSMenuItem 바로 가기 입력 또는 마우스 누르기 사이 확인

  • 키보드 단축키로 동일한 동작을 선택하면 게임이 즉시 실행되기 시작하지만 메뉴 애니메이션에서 게임 애니메이션으로 지연이 전환되지 않으므로 애니메이션이 손실되지 않습니다.

메뉴 항목에 의해 전송 된 IBAction이 키보드에 의해 또는 마우스에 의해 트리거되는지 식별 할 수있는 방법이 있습니까? 마우스가 사용되면 게임 애니메이션에 시작 지연을 추가하고 주요 키에 대해 지연을 추가하려고합니다.

+0

"애니메이션을 놓친다"는 것을 설명 할 수 있습니까? 활성화 후 조치를 약간 지연 시키는데 도움이됩니까? 300ms까지? – mschmidt

+0

@mschmidt입니다. 나는 400ms와 그 벌금까지 현재 연기하고있다. 문제는 이것 때문에 키보드에 상응하는 불필요한 지연이 사용자 경험에 적합하지 않다는 것입니다. 나는 마우스 활성화를위한 짧은 지연과 키보드 동등한 지연을 원할 뿐이다. 내가 아는 한 그들은 둘 다 어떤 기능을 활성화했는지를 알지 못하는 사이에 둘 다 같은 IBAction으로 끝납니다. – GOR

+0

아, 그래. 키보드/마우스를 통한 활성화로 인해 다른 콜백이 트리거 될 수도 있습니다. 두 경우 모두'NSMenuDelegate'의''option func menuNeedsUpdate (_ menu : NSMenu)'가 실행되는지 테스트 했습니까? 메뉴가 표시되지 않으므로 키보드에서는 불필요한 것으로 보입니다. – mschmidt

답변

4

현재 이벤트의 유형은 NSApp.currentEvent.type으로 읽을 수 있습니다.

자세한 내용은 NSApp.currentEventNSEvent.type을 참조하십시오.

+0

이것은 하나의 트릭을 할 것으로 보인다! 이 수표를 IBAction에 추가하겠습니다. – GOR