【发布时间】:2016-02-11 23:19:23
【问题描述】:
由 SVG 图像组成的棋盘游戏在 HTML 画布中绘制。我想在鼠标悬停在画布上时用鼠标移动透明的游戏块图像。我想这样做,而不必每次移动鼠标时都遍历游戏矩阵。我能想到的唯一方法如下所示;但是,绘制图像的最后一个位置仍然存在,导致了这种效果:
最好的方法是什么?
canvas.addEventListener("mousemove", drawPieceAtMouse, false);
function drawPieceAtMouse(event) {
var rect = canvas.getBoundingClientRect();
var x = event.clientX - rect.left;
var y = event.clientY - rect.top;
context.save();
context.globalAlpha = 0.4;
context.drawImage(players[turn].piece, x-25, y-25, 50, 50);
context.restore();
}
【问题讨论】:
-
您必须使用
context.clearRect清除之前的“光标”。为了让您的设计更有效率,您可以使用 CSS 在游戏画布上放置第二个画布,然后在该覆盖画布上绘制“光标”。您可以使用以下命令告诉第二个画布不要监听鼠标事件:pointer-events:none;,这样您的事件就会传递到下面的游戏画布。 但也许更有效的方法是使用 CSS 为画布分配自定义光标,而不是在鼠标位置绘制画布。
标签: javascript html canvas html5-canvas