Javascript-在网格上映射鼠标单击
我有一个由javascript数组组成的立方体网格。栅格尺寸存储在变量中。因此,Javascript-在网格上映射鼠标单击,javascript,arrays,grid,mapping,Javascript,Arrays,Grid,Mapping,我有一个由javascript数组组成的立方体网格。栅格尺寸存储在变量中。因此,dim是单个立方体的尺寸,间距是每个立方体之间的距离(dim和间距以像素表示) 现在,考虑到我总是可以让用户鼠标位置在变量g.mouseX和g.mouseY中,为什么这个代码并不总是那么精确 var j = Math.round(g.mouseX / (dim+spacing)); var i = Math.round(g.mouseY / (dim+spacing)); // user clicked on th
dim
是单个立方体的尺寸,间距
是每个立方体之间的距离(dim
和间距
以像素表示)
现在,考虑到我总是可以让用户鼠标位置在变量g.mouseX
和g.mouseY
中,为什么这个代码并不总是那么精确
var j = Math.round(g.mouseX / (dim+spacing));
var i = Math.round(g.mouseY / (dim+spacing));
// user clicked on the cell grid[j][i]
有时我点击一个立方体,但看起来他正在考虑附近的那个。看起来用户点击的整个映射被移动了半个dim
。可能使用Math.round会让一切都变得几乎错误,但我看不到任何其他方法可以在用户单击网格中的精确坐标时转换如此混乱和不可预测的值
希望任何人都能帮上忙
先谢谢你 您希望截断,而不是圆形。您可以使用
Math.floor
,它将(例如3.7
映射到3
:
var j = Math.floor(g.mouseX / (dim+spacing));
但实际上,为什么不只绑定每个网格单元的
onclick
事件呢?您想要的是截断,而不是取整。您可以使用Math.floor
,它将(例如3.7
映射到3
:
var j = Math.floor(g.mouseX / (dim+spacing));
但实际上,为什么不绑定每个网格单元的
onclick
事件呢?将尝试此方法!无法使用onclick,因为这些单元格不是CSS或HTML元素。我在画布上画画,所以从浏览器的角度来看,这些单元格不存在。我试试这个!无法使用onclick,因为这些单元格不是CSS或HTML元素。我在画布上画画,所以从浏览器的角度来看,这些单元格不存在。