Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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 如何选择和拖动与在fabricjs中单击的对象不同的对象?_Javascript_Canvas_Html5 Canvas_Fabricjs - Fatal编程技术网

Javascript 如何选择和拖动与在fabricjs中单击的对象不同的对象?

Javascript 如何选择和拖动与在fabricjs中单击的对象不同的对象?,javascript,canvas,html5-canvas,fabricjs,Javascript,Canvas,Html5 Canvas,Fabricjs,我在画布上绘制多个对象,但顶部的对象具有透明度。所以你可以看到它后面的图像。它是不可选择的。我希望能够单击该图像,然后通过编程选择其后面的图像,当我拖动鼠标时,移动该图像(而不是前面的trasnparent图像) 我尝试了此代码,但不起作用: function onSelect(event) { var activeObject = canvas.getActiveObject(); var newActive = canvas.getObjects()[ 0 ]; /

我在画布上绘制多个对象,但顶部的对象具有透明度。所以你可以看到它后面的图像。它是不可选择的。我希望能够单击该图像,然后通过编程选择其后面的图像,当我拖动鼠标时,移动该图像(而不是前面的trasnparent图像)

我尝试了此代码,但不起作用:

function onSelect(event)
{
    var activeObject = canvas.getActiveObject();
    var newActive = canvas.getObjects()[ 0 ];

    //Do nothing
    if ( activeObject === newActive ) return;

    //Switch
    canvas.setActiveObject( newActive );
}

//Add listener
canvas.on( "object:selected", onSelect );

这似乎选择了正确的对象,但它不会拖动它。

您是否尝试将
selectable
evented
属性设置为false?下面是一个例子,其中一个蓝色正方形位于另外两个正方形之上。您只能与蓝色正方形下方的2个对象交互,而不能与蓝色正方形交互

var canvas=newfabric.canvas(“c”,{preserveObjectStacking:true});
帆布
.add(新织物.Rect)({
排名:0,
左:0,,
宽度:100,
身高:100,
填充:“绿色”
}))
.add(新织物.Rect)({
前50名,
左:50,,
宽度:100,
身高:100,
填充:“红色”
}))
.add(新织物.Rect)({
排名:0,
左:0,,
宽度:400,
身高:300,
不透明度:0.5,
填充:“蓝色”,
可选:false,
事件:错误,
}))
.renderAll()
canvas{边框:1px纯黑;}

evented是关键