javascript - 与 Canvas 矩形交互

标签 javascript html5-canvas

我的简单 HTML 页面中有一个 Canvas 元素,它有几个使用 context.fillRect() 方法绘制的矩形。我需要与这些绘制的矩形进行交互。

我该怎么做?如何将 onclick 或 onmouseover 与这些矩形绑定(bind)?

最佳答案

您需要跟踪坐标并检查鼠标是否位于如下矩形之一:http://jsfiddle.net/eGjak/13/ .

显然,您也可以使用 mouseover 而不是 click

var ctx = $('#cv').get(0).getContext('2d');

var rects = [[0, 0, 100, 100], [0, 150, 50, 100]]; // [x, y, width, height]
for(var i=0;i<rects.length;i++) {
    ctx.fillRect(rects[i][0], // fill at (x, y) with (width, height)
                 rects[i][1],
                 rects[i][2],
                 rects[i][3]);
}

$('#cv').click(function(e) {
    var x = e.offsetX,
        y = e.offsetY;

    for(var i=0;i<rects.length;i++) { // check whether:
        if(x > rects[i][0]            // mouse x between x and x + width
        && x < rects[i][0] + rects[i][2]
        && y > rects[i][1]            // mouse y between y and y + height
        && y < rects[i][1] + rects[i][3]) {
            alert('Rectangle ' + i + ' clicked');
        }
    }
});

关于javascript - 与 Canvas 矩形交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452791/

相关文章:

javascript - 带有汉堡图标的响应式侧面导航菜单

javascript - "angular2-image-upload"npm 库 CORS 错误

javascript - 单击时向右和向左移动 div

javascript - 如何使用 Fabric.js 绘制与网格对齐的多条线

javascript - Transcrypt:使用来自另一个 python 脚本的代码导致 'TypeError: module is undefined'

javascript - 在 jQuery 中选择具有命名空间的节点

javascript - 通过范围 slider 旋转图像

javascript - 最大距离光线转换

html - Canvas 上的文字看起来很模糊

HTML5 Canvas - 绘制