2017-12-03 9 views
0

キャンバス上で複数のオブジェクトを選択しています(Shiftキーを押したまま)、選択した順番に依存しています(最初に選択したオブジェクトをグループ操作の参照として使用する必要があります) 。 私は、選択を行うときに秩序が保持されることがあり、ときどき秩序が維持されないことに気付きました。デバッグ中Iはfabric.jsのソースに次のコードを発見した:選択したオブジェクトの順序を保持

_createGroup: function(target) { 
    var objects = this.getObjects(), 
     isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target), 
     groupObjects = isActiveLower 
     ? [this._activeObject, target] 
     : [target, this._activeObject]; 
    this._activeObject.isEditing && this._activeObject.exitEditing(); 
    return new fabric.ActiveSelection(groupObjects, { 
    canvas: this 
    }); 
} 

したがって順序が選択される最初の二つのオブジェクトのZオーダーに依存して、単一の選択は複数選択に変換する場合(この関数が呼び出されます第2のオブジェクトを追加した後)。

私の目標を達成し、Zオーダーを無視する方法に関するアドバイスはありますか?コード内でこの並べ替えを元に戻すことができます.Zオーダーを確認し、オブジェクトを自然な順序に戻すことができますが、ちょうど狂ったように聞こえます。

この機能を回避するには、preserveObjectStackingオプションをtrueに設定する必要があります。そうしないと、選択時の順序がレンダリング中に「間違った」状態に戻されます。

+0

ためのGitHubのイシュートラッカーにチケットを開いて、に直面してはならない悪いことで、不足している機能か何かだと思う場合イベントハンドラ 'selection:created'と' selection:updated'を使って自分の配列を選択しましたが、それも非常にエレガントではありません。 – kikap

答えて

1

あなたがしていることをしない限り、注文し続ける方法がないことを確認できます。

してくださいあなたは、これはDEVはちょうど私が保つことによって、現在この問題を回避働いているだけでfabricjs

+0

完了、ありがとう! https://github.com/kangax/fabric.js/issues/4529 – kikap

関連する問題