2017-08-04 60 views
0

写真編集用ウェブページを作成しました。この問題はと深刻です。です。Canvas fabric.js renderAllで白い画面が表示されます

以下のように、元に戻す/やり直すコードを作成しました。白色プロセスとフルスクリーンをクリア

state = Stack.pop(); 
    canvas.fabric.loadFromJSON(state, function() { 
    canvas.fabric.renderAll(); 
    }); 

そしてが示され、それは多くの人々を離れてプッシュします。

これを削除して別のキャンバスにすることはできますが、その場合はウェブページ全体の構造を変更する必要があります。

fabric.jsには、簡単に作成できる機能はありますか?

例)display-previous-while-renderingですか?

+1

変更を元に戻すロジックを変更する必要があり、キャンバス全体をレンダリングする代わりに、変更したプロパティのみを更新する必要があります。 –

+0

背景の変更であっても、さまざまな種類の変更があり、全体のレンダリングと同じです。 –

答えて

0

最新のファブリックでは、キャンバスをフラッシュしないようにすることができます。 最新(2.0.0beta5)を使用できない場合は、次のようにします。

renderAll this.renderOnAddRemove下のブール状態を有する
fabric.StaticCanvas.prototype.clear = function() { 
    this._objects.length = 0; 
    this.backgroundImage = null; 
    this.overlayImage = null; 
    this.backgroundColor = ''; 
    this.overlayColor = ''; 
    if (this._hasITextHandlers) { 
    this.off('mouse:up', this._mouseUpITextHandler); 
    this._iTextInstances = null; 
    this._hasITextHandlers = false; 
    } 
    this.clearContext(this.contextContainer); 
    this.fire('canvas:cleared'); 
    this.renderOnAddRemove && this.requestRenderAll(); 
    return this; 
}; 

、falseにブールloadFromJson・プロセス・セットので、キャンバスのフラッシュをすることはありません。

+0

あなたの答えに感謝します。私は 'fabric.min.js'を置き換えました。' Undo'はスプラッシュなしでやっていますが、 'Redo'はスプラッシュでやっています。すべてのコードは同じですが、この問題は何ですか? –

関連する問題