Canvas 元素提供了一种在网页上绘制和操作图形的通用且高效的方法。然而,向画布内的各个形状或元素添加事件处理程序可能是一个挑战。本指南将提供一个全面的解决方案,将 onClick 事件处理程序附加到 canvas 元素,使您能够检测画布内特定区域的点击。
与传统 HTML 不同元素,canvas 元素没有可以交互的特定元素。相反,您需要使用不同的方法来捕获画布上绘制的形状上的单击事件。
要处理画布上的单击事件,您可以使用addEventListener 方法:
canvas.addEventListener('click', function() { }, false);
此代码将事件监听器附加到画布元素,每当画布上发生单击时,该事件监听器就会触发回调函数。
要确定画布上的哪个形状或元素被单击,您需要执行一些计算:
var elemLeft = elem.offsetLeft + elem.clientLeft; var elemTop = elem.offsetTop + elem.clientTop; var context = elem.getContext('2d');
这些行计算画布元素在页面内的偏移量并获取 2D 绘图上下文。
要跟踪画布上绘制的每个元素的位置和尺寸,请创建一个数组来存储元素对象:
var elements = [];
每个元素对象应包含形状的颜色、宽度、高度、顶部偏移和左侧偏移。
在点击事件回调函数中:
elem.addEventListener('click', function(event) { var x = event.pageX - elemLeft; var y = event.pageY - elemTop; // Collision detection between clicked offset and element elements.forEach(function(element) { if (y > element.top && y < element.top + element.height && x > element.left && x < element.left + element.width) { alert('clicked an element'); } }); }, false);
此代码检索单击坐标并检查 elements 数组中的每个元素,以确定单击是否发生在形状的边界内。如果是这样,它会触发警报。
您之前的尝试不起作用,因为:
以上是如何向 Canvas 元素添加 onClick 事件处理程序?的详细内容。更多信息请关注PHP中文网其他相关文章!