Fabric.JSを使用してAngular 2アプリケーションのキャンバスに要素をドラッグしています。アプリケーションを電話で開くと、アイテムをドラッグするときにかなりの時間がかかります。遅れは最初の数秒間そこにはないが、それは悪化し、アイテムをドラッグしている時間が長くなるにつれて悪化する。角度2のFabric.JSを使用したときのパフォーマンス上の問題
私は角2なしFabric.JSを使用してテストを行うことを決めた、と私は3つの平方オブジェクトを追加してい以下のコードサンプルでは角度2
を使用していないときに何のタイムラグが存在しないことが判明キャンバス。これらの3つのオブジェクトだけではラグはほとんど目に見えませんが、多くの複雑なオブジェクトを追加すると本当に悪くなります。
マイ遅れ角度2の成分:角度2を使用していないし、遅れていない
import {Component, OnInit, ViewChild, ElementRef} from '@angular/core';
import 'fabric';
declare let fabric;
@Component({
selector: 'app-fabric-canvas',
template: `
<canvas #canvas width="800" height="800"></canvas>
`
})
export class FabricCanvasComponent implements OnInit {
@ViewChild('canvas') canvasRef:ElementRef;
private canvas: any;
private square1;
private square2;
private square3;
ngOnInit() {
this.canvas = new fabric.Canvas(this.canvasRef.nativeElement, { });
this.square1 = new fabric.Rect({
width: 50,
height:50,
left: 0,
top: 0,
fill:'red'
});
this.square2 = new fabric.Rect({
width: 50,
height:50,
left: 0,
top: 0,
fill:'blue'
});
this.square3 = new fabric.Rect({
width: 50,
height:50,
left: 0,
top: 0,
fill:'green'
});
this.canvas.add(this.square1);
this.canvas.add(this.square2);
this.canvas.add(this.square3);
}
}
私のテスト:
<canvas id="canvas" width="800" height="800"></canvas>
<script>
var canvas = new fabric.Canvas('canvas');
var square1 = new fabric.Rect({
width: 50,
height:50,
left: 0,
top: 0,
fill:'red'
});
var square2 = new fabric.Rect({
width: 50,
height:50,
left: 0,
top: 0,
fill:'blue'
});
var square3 = new fabric.Rect({
width: 50,
height:50,
left: 0,
top: 0,
fill:'green'
});
canvas.add(square1);
canvas.add(square2);
canvas.add(square3);
</script>
質問です:なぜ私が経験していますこの遅れはFabric.JSを角2で使用している場合のみですか? Angular 2コンポーネントでFabric.JSをインポートまたは使用する方法に問題がありますか?
私は角度2のエキスパートではないかもしれませんが、角度が集中的なfps従属アプリケーションを実行する場所ではないことがわかっている限り、私が検討していない解決策があります角度のゾーン外でコードを実行しています。 [これ]のようなもの(https://angular.io/docs/ts/latest/api/core/index/NgZone-class.html) –
チップのおかげで、これは私が必要とするものかもしれません。私はそれを試してみる。 – SnorreDan
こんにちは。私はFabric.jsでAngular 2の座席予約アプリケーションを実装しましたが、1000席(四角形)の場合でも問題はありません。ここに私の[Hello World Angular 2 + Fabric.js](https://github.com/milanhlinak/hello-angular-fabric)プロジェクトがあります。このプロジェクトでは、1000個のアイテムでテストしましたが、私のモバイルデバイスに問題はありません。 –