2012-12-12 3 views
2

캔버스 애니메이션에 가장 적합한 것은 어느 것입니까? requestAnimFrame 또는 setInterval?canvas 애니메이션의 requestAnimFrame 또는 setInterval입니까?

+0

는'setInterval'가 대규모 빠릅니다. http://jsperf.com/requestanimationframe –

+0

http://jsperf.com/requestanimationframe/3, http://jsperf.com/requestanimationframe/5 – bfavaretto

+0

'requestAnimFrame'은 애니메이션 전용 *입니다. 'setInterval'은 폴백으로 만 사용될 수 있습니다. – Bergi

답변

5

requestAnimationFrame은 브라우저가 새 프레임을 그릴 준비가되었을 때 애니메이션이 정확하게 실행되도록합니다. 당신은 배터리 수명이 간격이 너무 오래 만드는

  • 표시되지 않습니다 너무 자주 그리기 작업을 수행 배수하는 경우에는 간격이 너무 짧은 만드는

    • : 당신이 setInterval를 사용하는 경우, 당신은 하나의 위험을 실행 ,이 경우 당신은 페이지 (배터리 수명을 절약 할 수있는) 보이지 않을 때 자주 실행하는 스로틀 수있는 짧은 간격으로

    requestAnimationFrame를 사용하여 부드러운 애니메이션을 입수했습니다 수 있지만, setInterval의 일부 구현은이 작업을 수행 뿐만 아니라 (현재 Firefox 및 Chrome).

    requestAnimationFrame은 애니메이션 용으로 의도적으로 제작되었습니다. setInterval은 정기적 인 조치가 필요한 모든 작업을 수행하도록 설계되었습니다. 애니메이션 (특히 캔버스 애니메이션)을 수행하는 경우 requestAnimationFrame을 사용하고 이전 브라우저의 경우 setInterval으로 대체하는 것이 좋습니다.

  • -1

    그러나 당신은 큰 기능에 setInterval을 사용할 수 있습니다 즉로드를 호출하고 윈도우가 부하 인 경우에만 전화 :

    function load() 
    { 
        var intervalle = x; 
        var game= setInterval(process,intervalle); 
        ... 
    
    } 
    window.addEventListener("load",load,true); 
    
    +2

    -1 : 질문에 어떻게 대답합니까? 네, 확실히 애니메이션을 위해서'setInterval'을 사용할 수는 있지만,이 대답은'setInterval'이나'requestAnimationFrame'이 더 좋은 이유를 설명하지 못합니다. – apsillers

    관련 문제