绘图使用鼠标事件
问题描述:
我想提请使用鼠标使用鼠标事件画布上的圆圈在画布上转了一圈,但它不画任何东西:绘图使用鼠标事件
tools.circle = function() {
var tool = this;
this.started = false;
this.mousedown = function (ev) {
tool.started = true;
tool.x0 = ev._x;
tool.y0 = ev._y;
ctx.moveTo(tool.x0,tool.y0);
};
this.mousemove = function (ev) {
var centerX = Math.max(tool.x0,ev._x) - Math.abs(tool.x0 - ev._x)/2;
var centerY = Math.max(tool.y0,ev._y) - Math.abs(tool.y0 - ev._y)/2;
var distance = Math.sqrt(Math.pow(tool.x0 - ev._x,2) + Math.pow(tool.y0 - ev._y));
context.circle(tool.x0, tool.y0, distance/2,0,Math.PI*2 ,true);
context.stroke();
};
};
我在做什么错?
答
嗯,这段代码并没有告诉我们很多,但是在你的代码中有几个明显的错误。 首先,DOM事件对象不具有_ x
和_ y
属性。而是clientX
和clientY
或pageX
和pageY
。 要获得相对鼠标从目前的事件对象的坐标,你会做这样的事情:
element.onclick = function(e) {
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
}
接下来,帆布2D背景的,没有一个方法叫做circle
,但你可以写你自己的,可能像:
var ctx = canvas.context;
ctx.fillCircle = function(x, y, radius, fillColor) {
this.fillStyle = fillColor;
this.beginPath();
this.moveTo(x, y);
this.arc(x, y, radius, 0, Math.PI*2, false);
this.fill();
}
总之,这是一个测试的HTML页面来测试这一点:http://jsfiddle.net/ArtBIT/kneDX/
我希望这有助于。 干杯
不正是我想要的,但也帮助我了解如何实现正是我想要使用圆 – Nitesh 2010-10-05 19:49:26
鼠标事件,你可以分享的鼠标事件的列表就像jSFiddele做,我们有onmouseover事件,难道我们有记录的其他事件列表? – 2013-11-12 23:55:14
@PKKG阅读更多关于DOM事件(包括鼠标事件)的信息:http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mouseevents – ArtBIT 2013-11-13 11:28:12