2014-01-30 6 views
1

저는 간단한 게임을 만들고 있습니다. 몇 초 동안 창을 최소화 한 후 게임이 돌아 오면 두 배의 프레임 속도로 게임이 실행되고 그 이후에는 더 많은 게임이 추가됩니다. 매번 60 번. 내 게임 루프는 다음과 같습니다.requestAnimationFrame이 (가) 60FPS를 초과하여 호출하는 경우

function disp(){ 
update(); 
draw(); 
requestAnimationFrame(disp); 
} 
requestAnimationFrame(disp); 

requestAnimationFrame을 포함하지 않는 업데이트 및 그리기 모두. 파이어 폭스와 크롬에서 같은 결과를 얻으려고 시도했다. 왜 이런 일이 일어나고 있는거야? 나는이 동일한 방법을 여러 번 사용했고 이것이 처음 일어난 일입니다.

편집 : 당신은 그것의 바이올린을 http://jsfiddle.net/5ttGs/ 에서 찾을 수 있습니다.이 정도면 내 진행을 일시 중지했습니다. 몇 번 클릭하고 10000 + FPS 게임 플레이 즐기기

+0

당신이 (HTTP [jsfiddle]에 감소 된 테스트 케이스를 생성 할 수 있습니다 : 해결하기 위해 단순히 현재 결과를 찾을 수 canvas.addEventListener

function mouse_up() { var matches = 0; var overlap = 69; mouse.up = false; console.log("clicked", mouse.x,mouse.y); disp(); } 

에서 DISP 제거되었다. jsfiddle.net) 또는 [jsbin] (http://www.jsbin.com) (또는 공개적으로 액세스 할 수있는 링크)? – Barney

+0

이 문제를 보여주는 예가 있습니까? –

+0

전역 변수 애니메이션 = requestAnimationFrame (disp)로 시도하십시오. 루프 애니메이션에서 = requestAnimationFrame (disp). 이렇게하면 한 번만 실행해야합니다. – cocco

답변

0

코코의 도움으로 문제가 해결되었습니다. 기본적으로 onclick 이벤트는 캔버스를 클릭 할 때마다 disp 함수가 호출됩니다. disp 함수에 requestAnimationFrame 프레임이 있었으므로 매초마다 두 번 호출하여 프레임이 유입되었습니다. // WWW : http://jsfiddle.net/5ttGs/