Javascript Fabric JS-将对象发送回
当您选择一个对象(在我的示例中是多边形)时,它会自动移动到前面。我正在寻找一种方法来防止z轴上的移动,或者在选择后将其向后发送,也许有人可以帮助 下面是一个简单示例的链接: 选择其中一个多边形时,它会移动到前面。我试图在选择后将其向后发送,但即使调用了“canvas.sendToBack(object)”函数,它仍然位于前面 我的示例中的代码是:Javascript Fabric JS-将对象发送回,javascript,frontend,fabricjs,Javascript,Frontend,Fabricjs,当您选择一个对象(在我的示例中是多边形)时,它会自动移动到前面。我正在寻找一种方法来防止z轴上的移动,或者在选择后将其向后发送,也许有人可以帮助 下面是一个简单示例的链接: 选择其中一个多边形时,它会移动到前面。我试图在选择后将其向后发送,但即使调用了“canvas.sendToBack(object)”函数,它仍然位于前面 我的示例中的代码是: var canvas = new fabric.Canvas('c'); var pol = new fabric.Polygon([ {x:
var canvas = new fabric.Canvas('c');
var pol = new fabric.Polygon([
{x: 200, y: 0},
{x: 250, y: 50},
{x: 250, y: 100},
{x: 150, y: 100},
{x: 150, y: 50} ], {
left: 250,
top: 150,
angle: 0,
fill: 'green'
}
);
var pol2 = new fabric.Polygon([
{x: 200, y: 50},
{x: 200, y: 100},
{x: 100, y: 100},
{x: 100, y: 50} ], {
left: 300,
top: 200,
angle: 0,
fill: 'blue'
}
);
canvas.add(pol, pol2);
canvas.on('object:selected', function(event) {
var object = event.target;
canvas.sendToBack(object);
//object.sendToBack();
console.log("OK");
});
这是因为您使用的结构版本。在fiddle中,正如我所见,您使用了
版本0.9
,因此,无论何时选择一个对象,其z索引都会发生更改,使其位于顶部/前部,这似乎是默认行为。尝试使用更高版本。在其他版本中,如果对象位于后面,则此问题不存在,即使您选择了它,它也会保留在后面。
这是一个更高版本(1.4.0)
的演示。在这里,无论何时选择对象,它都将向后移动。如果你注释掉向后发送的代码,它将保持在前面,如果在后面,它将保持在后面
var canvas=newfabric.canvas('c');
var pol=新结构。多边形([
{x:200,y:0},
{x:250,y:50},
{x:250,y:100},
{x:150,y:100},
{x:150,y:50}]{
左:250,
排名:150,
角度:0,
填充:“绿色”
}
);
var pol2=新结构。多边形([
{x:200,y:50},
{x:200,y:100},
{x:100,y:100},
{x:100,y:50}]{
左:300,,
前200名,
角度:0,
填充:“蓝色”
}
);
canvas.add(pol,pol2);
canvas.on('object:selected',函数(事件){
var object=event.target;
canvas.sendToBack(对象);
//object.sendToBack();
控制台日志(“选定”);
});
步骤1:您可以使用preserveObjectStacking:true
步骤2:然后使用sendtoback、sendtofront…fabricjs选项,如下所示
var canvas=newfabric.canvas('c'{
对:对
});
var pol=新结构。多边形([{
x:200,
y:0
}, {
x:250,
y:50
}, {
x:250,
y:100
}, {
x:150,
y:100
}, {
x:150,
y:50
}], {
左:250,
排名:150,
角度:0,
填充:“绿色”
});
var pol2=新结构。多边形([{
x:200,
y:50
}, {
x:200,
y:100
}, {
x:100,
y:100
}, {
x:100,
y:50
}], {
左:300,,
前200名,
角度:0,
填充:“蓝色”
});
canvas.add(pol,pol2);
var对象返回;
canvas.on(“选择:已创建”),函数(事件){
objectToSendBack=event.target;
});
canvas.on(“选择:更新”),函数(事件){
objectToSendBack=event.target;
});
var sendSelectedObjectBack=函数(){
canvas.sendToBack(objectToSendBack);
}
发回
感谢您的回复:)在我自己的项目中,我正在使用新版本,我创建了一个新版本,但它不再工作:我认为这是一个bug,所以我将报告此情况。:)谢谢这不是一只虫子。看见