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,这是我使用的方法,但我认为可能有更好的解决方案,但似乎就是这样。我可以得到拖动和移动逻辑工作良好!谢谢