gpt4 book ai didi

javascript - FabricJS - 组选择在选择时将对象带到前面

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:31:31 24 4
gpt4 key购买 nike

当我选择一组对象时,所有对象都会自动呈现在所有对象之上。这是一种烦人的行为,它使得很难选择位于所选元素之上的其他元素。

有一个发生这种情况的例子 here .

function newRect(index) {
return new fabric.Rect({
width: 100,
height: 100,
top: index * 30,
left: index * 30,
fill: '#' + (0x1000000 + (Math.random()) * 0xffffff).toString(16).substr(1, 6),
});
}

var canvas = new fabric.Canvas('canvas');

var rect0 = newRect(0);
canvas.add(rect0);

var rect1 = newRect(1);
canvas.add(rect1);

var rect2 = newRect(2);
canvas.add(rect2);

var group = new fabric.Group([rect0, rect1]);

canvas.setActiveGroup(group).renderAll();

setTimeout(function() {
canvas.discardActiveGroup().renderAll();
}, 5000);

When the two elements that are behind another are selected, they are rendered on top of the third one.但是当它们被取消选择时,(等待 5 秒直到组被丢弃)它们被正确地呈现在顶部元素的后面。

有没有办法禁止这种行为?我希望所选元素在选中时保持 z 顺序,而不是在所有元素之上。

最佳答案

我想我已经找到了解决方案。

我需要在初始化 Canvas 时添加 preserveObjectStacking: true 选项。

var canvas = new fabric.Canvas('canvas', {
preserveObjectStacking: true,
});

https://jsfiddle.net/fbgu7697/3/

它按我的预期工作,但它似乎有一个奇怪的错误。我会在 github 上打开它。

更新

该问题已在 1.6.1 版本中修复。

https://jsfiddle.net/1vawp9gu/

关于javascript - FabricJS - 组选择在选择时将对象带到前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37028088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com