我在画布上选择多个对象(按住Shift键),我的代码依赖于选择的顺序(我需要使用第一个选定的对象作为组操作的参考)。 我注意到,在进行选择时有时会保留顺序,有时却没有。在调试时,我在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顺序(在添加第二个对象后,单个选择转换为多个选择时,将调用此函数)。
有关如何实现目标并忽略Z顺序的任何建议?我可以&#34;撤消&#34;在我的代码中重新排序,自己检查Z顺序并将对象交换回他们的&#34;自然&#34;订单,但它听起来很疯狂。
在解决此功能时,应将选项preserveObjectStacking
设置为true,否则选择顺序将恢复为&#34;错误&#34;渲染过程中的一个。
答案 0 :(得分:1)
我可以向你确认,除非你做你正在做的事情,否则没有办法让它保持秩序。
如果您认为这是一件坏事,一件缺少的功能或者开发人员不应该面对的事情,请打开一张关于fabricjs的github问题跟踪器的门票