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

Javascript 如何在Fabric.js上获取鼠标坐标?

Javascript 如何在Fabric.js上获取鼠标坐标?,javascript,jquery,html5-canvas,fabricjs,Javascript,Jquery,Html5 Canvas,Fabricjs,我正在尝试读取鼠标单击Fabric.js时的X坐标 这是我的密码。控制台每次都记录未定义的 var canvas = new fabric.Canvas('c1'); canvas.on('mouse:down', function(e){ getMouse(e); }); function getMouse(e) { console.log(e.clientX); } 试试这个 function getMouse(e) { console.log(e.e.clientX);

我正在尝试读取鼠标单击Fabric.js时的X坐标

这是我的密码。控制台每次都记录
未定义的

var canvas = new fabric.Canvas('c1');
canvas.on('mouse:down', function(e){
  getMouse(e);
});

function getMouse(e) {
  console.log(e.clientX);
}
试试这个

function getMouse(e) {
    console.log(e.e.clientX);
}

更新,作为
画布事件
选项
作为
参数
而不是
事件
类似

canvas.on('mouse:down', function(options){
   getMouse(options);// its not an event its options of your canvas object
});


function getMouse(options) {
    console.log(options);// you can check all options here
    console.log(options.e.clientX);
}
只需使用e.e.clientX

e、 克莱恩蒂

获取位置的最佳方法是

实施:

function getMouseCoords(event)
{
  var pointer = canvas.getPointer(event.e);
  var posX = pointer.x;
  var posY = pointer.y;
  console.log(posX+", "+posY);    // Log to console
}

若要基于画布本身上的设置宽度和高度获取坐标,请使用layerX和layerY属性

canvas.on('mouse:move', function(options) {
    console.log(options.e.layerX, options.e.layerY);
});
也许这会有帮助:

//Convert To Local Point
function toLocalPoint(event, canvas) {
var offset = fabric.util.getElementOffset(canvas.lowerCanvasEl), localX = event.e.clientX - offset.left, localY = event.e.clientY - offset.top;
return new fabric.Point(localX, localY);

}

工作起来很有魅力。为什么是e.e.clientX?已经有另一个答案使用了相同的解决方案,并给出了解释。这个答案没有增加任何新的东西。这当然是一个可行的方法,但当你可以使用一个更简单、更优雅的方法时,它增加了不必要的复杂性。如何在mozzila上实现这一点我对var pointer=canvas.getPointer(event.e)有问题;你到底有什么问题?需要更多信息。谢谢你的来信。我在下面的链接上发布了查询并获得了answare,谢谢!你有没有考虑过画布平移和缩放的例子?