1

タイトルが示すように、キャンバス要素のコンテンツが再描画されたときに通知が必要です。これは可能ですか?

そうでない場合は、ページ全体が再描画されたときの通知も問題ありません (reDRAWN no​​t reLOADED!)。

これが必要な理由は、キャンバス内で実行されているアニメーションの現在の FPS を取得したいからです。

4

1 に答える 1

3

Canvas 自体には「再描画」メソッドやイベントはありません。アーキテクチャは、いつでもどの関数でもコンテキスト内で描画できるようなものです。ただし、可能な解決策は、新しいフレームの描画をマークする特定の関数を「オーバーライド」することです。具体的には、context.clearRect をオーバーライドするのがよいと思います。

var context=canvas.getContext('2d');
context._clearRect=context.clearRect;
context.clearRect=function(x,y,w,h){
    context._clearRect(x,y,w,h);
    //do your stuff here
};

このメソッドの唯一の問題は、clearRect がフレームごとに 1 回だけ呼び出されることを前提としていることです。ただし、これが当てはまる限り、上記のコードは機能します。

于 2010-04-01T12:45:59.987 に答える