Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Fabric JS-将对象发送回_Javascript_Frontend_Fabricjs - Fatal编程技术网

Javascript Fabric JS-将对象发送回

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:

当您选择一个对象(在我的示例中是多边形)时,它会自动移动到前面。我正在寻找一种方法来防止z轴上的移动,或者在选择后将其向后发送,也许有人可以帮助

下面是一个简单示例的链接:

选择其中一个多边形时,它会移动到前面。我试图在选择后将其向后发送,但即使调用了“canvas.sendToBack(object)”函数,它仍然位于前面

我的示例中的代码是:

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,所以我将报告此情况。:)谢谢这不是一只虫子。看见