Javascript 使用mouseevent调用函数

Javascript 使用mouseevent调用函数,javascript,Javascript,我有一个JavaScript绘图应用程序,可以在画布上绘图。下面的工具是粉笔工具 有人能告诉我如何在mousedown事件中调用函数吗 这就是我尝试过的: $("#drawingCanvas").mousedown(function(ev) { tools.chalk.mousedown(ev); }); var tools = {}; // Chalk tool. tools.chalk = function() { var tool = this; this.started

我有一个JavaScript绘图应用程序,可以在画布上绘图。下面的工具是粉笔工具

有人能告诉我如何在mousedown事件中调用函数吗

这就是我尝试过的:

$("#drawingCanvas").mousedown(function(ev) {
  tools.chalk.mousedown(ev);
});


var tools = {};

// Chalk tool.
tools.chalk = function() {
  var tool = this;
  this.started = false;

  // Begin drawing with chalk tool.
  this.mousedown = function(ev) {
    context.beginPath();
    context.moveTo(ev._x, ev._y);
    points.push({
      x: ev._x,
      y: ev._y,
      size: brushSize,
      color: brushColor,
      mode: "begin"
    });
    tool.started = true;
  };
  this.mousemove = function(ev) {
    if (tool.started) {
      context.lineTo(ev._x, ev._y);
      context.stroke();
      points.push({
        x: ev._x,
        y: ev._y,
        size: brushSize,
        color: brushColor,
        mode: "draw"
      });
    }
  };
  this.mouseup = function(ev) {
    if (tool.started) {
      tool.mousemove(ev);
      tool.started = false;
      points.push({
        x: ev._x,
        y: ev._y,
        size: brushSize,
        color: brushColor,
        mode: "end"
      });
      img_update();
    }
  };
};

您正在从声明的函数
chalk
访问名为
mousedown
的属性,这是错误的,因为您试图直接访问对象
chalk
上的属性,在本例中,这是一个声明的函数

我认为您真正想要做的是将函数
chalk
作为构造函数调用

let tools={};
//粉笔工具。
tools.chalk=函数(){
让工具=这个;
this.start=false;
//使用粉笔工具开始绘图。
this.mousedown=函数(ev){
console.log(“mousedown”);
};  
};
让chalkObj=新工具。chalk();
$(“#drawingCanvas”).mousedown(函数(ev){
chalkObj.mousedown(ev);
});

点击我

只需使用DOM对象委托

$('.mousedownddiv')。在('mousedown',function()上{
console.log('mousedown!');
});
div{
光标:指针;
}


点击这里
您的粉笔工具使用事件中的一些修改坐标,我的意思是这些
ev.\ux
ev.\uy
。为了使其正常工作,您可以1)重写该工具以使用原始坐标,如
clientX/Y
,或仅2)将原始坐标映射到
ev
,或者您可以做的最好的事情是3)找到
ev
背后的逻辑并将其应用于您的
ev
,然后再传递它。eng不是我的母语,这种事情经常发生