Javascript 使用mouseevent调用函数
我有一个JavaScript绘图应用程序,可以在画布上绘图。下面的工具是粉笔工具 有人能告诉我如何在mousedown事件中调用函数吗 这就是我尝试过的: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
$("#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不是我的母语,这种事情经常发生