Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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_Canvas_Html5 Canvas_Fabricjs - Fatal编程技术网

Javascript fabric.js:将事件绑定到背景图像

Javascript fabric.js:将事件绑定到背景图像,javascript,canvas,html5-canvas,fabricjs,Javascript,Canvas,Html5 Canvas,Fabricjs,我正在尝试将事件绑定到背景图像: var imgInstance = fabric.Image.fromURL(path, function(oImg) { oImg.on("selected", function() { alert(); }); canvas.setBackgroundImage(oImg, canvas.renderAll.bind(canvas), { top: 0, left: 0 })

我正在尝试将事件绑定到背景图像:

var imgInstance = fabric.Image.fromURL(path, function(oImg) {

    oImg.on("selected", function() {
        alert();
    });

    canvas.setBackgroundImage(oImg, canvas.renderAll.bind(canvas), {
        top: 0,
        left: 0
    });

    oImg.on("selected", function() {
        alert();
    });
});
我可以让它工作。我试图绑定鼠标事件来处理拖动,这样当图像大于画布时,我就可以移动它,比如背景覆盖css属性

想法

谢谢大家

解决方案:

var DragStart = false;

canvas.on('mouse:down', function(options) {
    if (!options.target) {
        DragStart = true;
    }else {
        DragStart = false;
    }
});

canvas.on('mouse:move', function(options) {
    if (DragStart) {

        var bounds = getBounds(options.e); // validate boundaries between image and canvas

        canvas.backgroundImage.top = bounds.y;
        canvas.backgroundImage.left = bounds.x;
        canvas.renderAll();
    }
});

看起来你无法将事件添加到背景图像中。。。但是画布确实会发出事件,如果您单击画布并且没有设置目标,则它们必须单击背景。背景图像并没有被强制占据整个背景,但我不确定为什么不让它占据整个背景

不过,您确实会传入鼠标事件,因此,如果背景图像没有占据整个背景,您可以进行计算,找出它们单击的位置

window.canvas=newfabric.canvas('c',{selection:false,preserveObjectStacking:true});
fabric.Image.fromURL('http://fabricjs.com/assets/pug_small.jpg,函数(o){
canvas.setBackgroundImage(o,canvas.renderAll.bind(canvas){
排名:0,
左:0
});
});
canvas.on('mouse:down',函数(选项){
如果(!options.target){
console.log('目标为空')
}
});
add(newfabric.Rect({
左:100,,
前100名,
宽度:50,
身高:50,
填写:“#faa”,
原文:“左”,
原创:“top”,
中心旋转:正确
}));

谢谢@tefanHayden,这是我使用的方法,但我认为可能有更好的解决方案,但似乎就是这样。我可以得到拖动和移动逻辑工作良好!谢谢