キャンバス上で複数のオブジェクトを選択しています(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に設定する必要があります。そうしないと、選択時の順序がレンダリング中に「間違った」状態に戻されます。
ためのGitHubのイシュートラッカーにチケットを開いて、に直面してはならない悪いことで、不足している機能か何かだと思う場合イベントハンドラ 'selection:created'と' selection:updated'を使って自分の配列を選択しましたが、それも非常にエレガントではありません。 – kikap