我正在学习JS(想想我不是太老了)和编写应用程序来绘制电子设备:http://3lectronics.com/draw/Atarado-Draw1.html
我能得到的最有力的帮助就在这里,因为许多伟大的人分享知识。我把20x20px对齐的原因叠加到了网格上,因为我发现了一些hacky(显然)的方法来进行捕捉。它只适用于Firefox和Seamonkey ......代码:
function ev_canvas (ev) {
if (ev.layerX || ev.layerX == 0) { // Firefox
x2 = (ev.layerX /2).toFixed(-1) *2 ;
y2 = (ev.layerY /2).toFixed(-1) *2 ;
} else if (ev.offsetX || ev.offsetX == 0) { // Opera
x2 = ev.offsetX;
y2 = ev.offsetY;
}
效果很好(你可以尝试),但其他浏览器不服从运行它。我发现Chrome不喜欢.toFixed()中的负值,如果没有它,它可以工作,但我没有捕捉...... 任何想法.... Thanx。
答案 0 :(得分:2)
toFixed仅在Chrome中支持0到20之间
绕到10位的另一种方法是除以10,舍入,然后乘以10。
var x2 = Math.round(ev.layerX /20) *20 ;
不确定您发生的*2
/2
是什么,但我将其留在那里。