【发布时间】:2019-06-05 18:37:01
【问题描述】:
我有一个画布元素,它是由一堆图像组成的画布元素。我想为画布上的每个图像添加一个标签,但只希望它在用户将鼠标悬停在正确的图像上时显示。
我设法让一些文本显示出来,但我无法弄清楚如何只在鼠标悬停时显示它而不在鼠标离开时显示。目前我正在检查鼠标位置是否与点数组的鼠标位置匹配。如果是,它会添加文本。
canvas.addEventListener('mousemove', handleMouseMove.bind(this));
var handleMouseMove = function (e) {
var mousePos = getSquare(canvas, e);
var pos = points.filter((item => mousePos.x === item.x && mousePos.y === item.y));
if (pos && pos.length) {
context.fillStyle = "#ffffff";
console.log(pos);
context.fillText('Hello', pos[0].x, pos[0].y);
} else {
context.fillStyle = "#ffffff00";
return;
}
};
var getSquare = function (canvas, evt) {
context.globalCompositeOperation = 'source-atop';
var rect = canvas.getBoundingClientRect();
return {
x: 1 + (evt.clientX - rect.left) - (evt.clientX - rect.left) % 20,
y: 1 + (evt.clientY - rect.top) - (evt.clientY - rect.top) % 20
};
};
基本上我希望“你好”出现,但只有当你将鼠标悬停在正确的位置时。
【问题讨论】:
标签: javascript canvas html5-canvas