2017-12-30 2 views
1

내 처리 프로젝트에서 탐색 시스템을 구현하고 싶습니다. 사용자 (객체를 탐색하는)가 좌회전하려면 'a'버튼을 누릅니다. 여기의 keyPressed 내 콜백 함수는 다음과 같습니다키 보유시 연속 콜백 처리

나는 90도 좌회전하기 위해 'A'키를 스팸됩니다 않도록하려면 무엇
void keyPressed() { 
... 
if(key == 'a') { ship.plainAngle -= 0.1; } 
else if(key == 'd') { ship.plainAngle += 0.1; } 
} 

. 나는 그것을 직접적으로 (0.1) 영향을 미치는 값을 증가 시키려고 노력했지만 그것이 느리게 보였다. 사용자가 키를 계속 누르고있는 동안 연속 콜백을 처리 할 가능성이 있다고 들었습니다. 내가 콜백 함수를 사용하여 알게되면서 keyPressed는 해결되어야한다. 그러나 그것은 나를 위해 작동하지 않는다. 콜백 함수의 코드는 한 번만 실행됩니다. 나는 그 문제를 해결하는 방법을 모른다.

+0

정보가 충분하지 않습니다. 어떻게 콜백을 설정하고 있습니까? 어떤 UI 라이브러리를 사용하고 있습니까? – mayaknife

+0

라이브러리없이 순수 처리를 사용합니다. 위에서 설명한대로 내 기본 프로젝트 파일에 콜백 함수를 선언하여 콜백 함수를 설정합니다. – Mark

+0

앞으로 이와 같은 단절된 스 니펫 대신 [mcve]를 게시하십시오. –

답변

1

boolean 변수를 사용하여 a 키 (또는 관심있는 다른 키)가 현재 눌려져 있는지 여부를 추적합니다. 함수에서 true으로 설정하고 mouseReleased() 함수에서 false으로 설정하십시오. 그런 다음 draw() 함수에서 해당 변수를 확인하고 현재 키가 눌러져 있으면 아무 작업을 수행 할 수 있습니다.

뻔뻔한 자기 승진 : 처리 가능한 키보드 입력에 대한 자습서를 here에 적었습니다. 방금 설명한 방법에 대한 다중 키 프레스 처리 섹션을 확인하십시오.