2017-08-01 30 views
0

私はfabric.js-1.6.6を使用するソフトウェア成果物の開発を進めています。このコードは、キャンバスにオブジェクトを追加/削除したり、キャンバスから操作したりする他のプログラマによって使用されます。fabric.js canvasを永続的にリフレッシュする

他のプログラマのリフレッシュルーチンによる遅延を避けるために、私は自分のコードのユーザに対して透過的なグローバルリフレッシュ機能を実装することにしました。 (キャンバスはすべての時間をリフレッシュしますと)

(function render() { 
     fabric.util.requestAnimFrame(render); 
     canvas.renderAll(); 
    })(); 

が、私はそれが超効率的ではないかもしれないけど、私は自分自身でキャンバスをレンダリングに対処することから、他のプログラマを防止しています:さわやかなルーチンは、このようになります外観が永久に変化する特殊なオブジェクトを実装するときに、キャンバスを更新する必要があります。

最近、コードをファブリック2.0.0ベータ4に移行しようとしましたが、キャンバスはもう更新されません。どのようにこれを修正するための任意のアイデア?

また、パーマネントキャンバスのリフレッシュルーチンを使用する方が、より優れた効率的な方法がありますか?私が決心したのはAnimating polygon points公式ファブリックデモに触発されましたが、私のキャンバスには常に変化するオブジェクトがかなり多く必要なので、これは最良の戦略ではないかもしれません。

+0

この機能を使用すると、ファブリック2.0.0beta4でキャンバスがレンダリングされないようなフィドルを提供できますか? – AndreaBogazzi

答えて

0

私の個人的な提案は、2.0.0で見始めることです。 新しいバージョンでは、requestAnimationFrameを適切に使用するrequestRenderAllという新しいメソッドを実装しています。

キャンバスの自動リフレッシュを16msごとに行うことは、過度の攻撃である可能性があることを考慮してください。 私にとっては、最も洗練された解決策は、他の開発者に、renderRllではなく、requestRenderAllを使用するように要求することです。

連鎖呼び出しrequestRenderAllは、アニメーションがまだ要求段階にあるまで、他のものは要求されないので、何の効果もありません。

関連する問題