2012-12-16 5 views
1

setInterval은 휴대 전화마다 다릅니다. 많은 다른 휴대 전화 기기에서 실행되도록 HTML5 게임을 제작하려고합니다. 애니메이션과 타이머에 setInterval을 사용하고 있는데, Galaxy SII의 게임 속도가 HTC Nexuse One의 속도보다 높음을 알았습니다! HTC는 20 초 타이머를 완료하는 데 30 초 이상 걸립니다 !!!! 아이디어가 있으십니까?setInterval은 휴대 전화마다 다릅니다.

답변

4

유일한 아이디어는 모바일 장치에서 브라우저가 허용하는 최소 setInterval을 테스트하는 것입니다.

var date = Date.now(); 
setInterval(function(){ 
    var d = Date.now() - window.date; 
    console.log(d); 
}, 0); 

모든 브라우저마다 다른 값이 있습니다. 또한 requestAnimationFrame을 시도하고 테스트 할 수 있습니다. 구현되지 않은 경우 setInterval을 사용하는 경우에도 쉽게 사용할 수있는 코드를 찾을 수 있지만이 경우에도 프레임 속도와 최소 시간을 고려합니다. 각 브라우저에서 허용됩니다.

+0

requestAnimationFrame은 장치 디스플레이와 동기화되는 유일한 신뢰할 수있는 방법입니다. 100Hz/120Hz/... 디스플레이 (120Hz 랩톱이 있고 requestAnimationFrame을 사용하는 게임을 사용하면 컴퓨터가 과열 상태가됩니다)의 게임 루프에 여전히 높은 주파수 제한을 두어야합니다. 그래서 그냥 : if (lastRunTime-Date.now() <14) return; 또는 좋아. – GameAlchemist

+0

window.setTimeout (callTheFunction, 30)을 사용하여 funvtion을 호출하는 방법은 무엇입니까 ?? 안정적인가요? 그렇지 않으면 요구되는대로 작동하지 않을까요? – Solieman

+0

@Solieman 또한 시간 초과로드에 따라 다릅니다. 스택에 100 개의 함수가 있고 시간이 초과 되었다면 30 밀리 초 후에 실행할 수 없습니다. requestAnimationFrame이 존재하거나 여기에 상응하는 코드 (http://paulirish.com/2011/requestanimationframe-for-smart-animating/)를 사용하여 제안 할 것입니다. – helly0d

관련 문제