我有一个超过1600个20x20像素正方形的snap.svg网格,我正在尝试找到一个最有效的跟踪方式,当一个移动点在每个方格内时。我能想到的就是循环遍历寻找isPointInside的所有方块:
for (var t = 0; t < numUnits; t++) {
var square = squares[t];
if (Snap.path.isPointInside(square, x, y)) {
hits[t]++;
break;
}
}
如果有一种方法可以在每个方块上创建一个事件监听器,例如鼠标悬停或悬停,那么肯定会很好。
答案 0 :(得分:0)
这可能取决于您想要的准确程度,以及元素的抽样是否有效。
如果是这样,您可以使用elementFromPoint
var el = document.elementFromPoint(xArray[j]+8,yArray[j]+8);
Snap(el).attr({ fill: 'red' });
注意,它与你的不完全匹配,但很接近,我猜是因为可能需要考虑的偏移量(我刚试过8)