2013-08-30 3 views
0

게임을 만들고 현재 그래픽 지터가있는 곳에서 문제가 발생했습니다. AWSD 키를 누를 때 맨 위부터 지터가 시작됩니다. 지 터링은 위에서 시작하여 전체 화면으로 퍼집니다. https://dl.dropboxusercontent.com/u/94218355/Game.rar 게임 파일 그래서 당신이 스스로를 테스트 할 수 https://dl.dropboxusercontent.com/u/94218355/javaw%202013-08-30%2010-36-45-171.avi 여기그래픽 Java 2D 게임에서 지터 처리

게임 파일입니다 다음은 비디오 파일입니다. Screen.java를 보면 오류가 숨어있는 곳이라고 생각합니다.

+0

사람들이 전체 코드베이스를 읽을 수 있도록하려면 어디를 봐야하는지 알려주는 것이 좋습니다. – Cruncher

+0

질문에 관련 데이터를 게시하는 것이 좋습니다. 대부분의 사람들은 파일 시스템을 통해 파일을 다운로드하려는 경향이 적어 코드 벽을 통해 읽고 싶어하지 않을 것입니다. –

답변

0

지터를 방지하려면 double buffering or page flipping을 사용해야합니다.

+0

감사합니다. 나는 같은 결과로 더블 버퍼링을 시도했다. 나는 일반적으로 트리플 버퍼링을 사용한다. – user2733323

0

소스가 없으므로 교양있는 추측입니다. 이 문제는 입력을 처리하는 방법과 관련 될 가능성이 높습니다. 키가 KeyListener 인터페이스를 통해 등록 된 경우 키 누르기 사이에 고유 지연이 있다는 사실 때문에 java2d 게임에서 일반적인 버그가 있습니다. 키를 누르고 있으면 (a) aaaaa..이 되겠지만 실제로 얻을 수있는 것은 a|inputlag|a|inputlag|...입니다.이 대기 시간은 꽤 길며 (보통 60FPS보다 훨씬 큽니다) 키를 계속 누르고 있으면 카메라를 카메라로 옮길 수 있습니다 지저분 해 보인다.

간단한 해결책은 키에 부울 플래그를 사용하고 키를 눌렀을 때 true로 설정하고 해제되면 false로 설정하는 것입니다. 예제 코드 here을 참조하십시오. 또는 keybindings을 사용하십시오.

+0

방금 ​​소스 코드를 추가했습니다. 처음 잊어서 죄송합니다. – user2733323

+0

예, 캔버스를 확장하고 addKeyListener를 수행하면 KeyListener 인터페이스가 구현되므로 의심 스럽습니다. 즉, 내가 설명한 대기 시간을 경험하게됩니다. – arynaq