2013-05-14 7 views
10

requestAnimationFrameでキャンバスアニメーションを一時停止するにはどうすればよいですか?今、私はKeyDownイベントの後に一時停止オプションを追加したいキャンバスrequestAnimationFrameポーズ

window.requestAnimFrame = (function() { 
    return window.requestAnimationFrame  || 
      window.webkitRequestAnimationFrame || 
      window.mozRequestAnimationFrame || 
      function(callback) { 
       window.setTimeout(callback, 1000/60); 
      }; 
})(); 

function Start() { 
    Update(); 
    requestAnimFrame(Start); 
} 

Start(); 

コード: は、私はこのようなアニメーションを開始します。それを行う簡単な方法はありますか?

+2

イワンチャブ・ソリューションは、動作しますが、ブラウザはrequestAnimationFrameのコールバックを呼び出してまいります。この問題を回避するには、代わりに[cancelAnimationFrame](https://developer.mozilla.org/en-US/docs/DOM/window.cancelAnimationFrame)を使用してください。 requestAnimationFrame robust polyfill(この記事では公開されています)(http://paulirish.com/2011/requestanimationframe-for-smart-animating/)を参照してください。 –

+0

'RequestAnimationFrame'は' Update() 'で呼び出されませんか?そうでなければ、別の関数を呼び出す以外の何もしない関数を呼び出します。 –

答えて

8

アニメーションの状態(一時停止または一時停止していない状態)を保存する変数を作成することができます。ボタンをクリックするたびにその状態を変更します。このような何か作業をする必要があります:

var isPaused = false; 

window.requestAnimFrame = (function() { 
    return window.requestAnimationFrame  || 
      window.webkitRequestAnimationFrame || 
      window.mozRequestAnimationFrame || 
      function(callback) { 
       window.setTimeout(callback, 1000/60); 
      }; 
})(); 

function Start() { 
    if (isPaused) { 
     Update(); 
    } 

    requestAnimFrame(Start); 
} 

window.onkeydown = function() { 
    isPaused = !isPaused; // flips the pause state 
}; 

Start(); 
関連する問題