HTML5.如何在绘制的画布组件中添加鼠标事件
HTML5. How to add mouse event in drawn canvas compoent
我想在画布上画200个物体
并添加鼠标悬停、鼠标点击事件
像这样的源代码
(有效k为增加(
……
……
对于(k=0;k<200;k++({start=start[k];end=end[k];
x1 = centerX-radius*Math.sin(-arg*start)*0.9;
y1 = centerY-radius*Math.cos(-arg*start)*0.9;
x2 = centerX-radius*Math.sin(-arg*start)*0.95;
y2 = centerY-radius*Math.cos(-arg*start)*0.95;
x3 = centerX-radius*Math.sin(-arg*end)*0.95;
y3 = centerY-radius*Math.cos(-arg*end)*0.95;
x4 = centerX-radius*Math.sin(-arg*end)*0.9;
y4 = centerY-radius*Math.cos(-arg*end)*0.9;
Shape(ctx, x1,y1,x2,y2,x3,y3,x4,y4,k);
}
function Shape(ctx, x1,y1,x2,y2,x3,y3,x4,y4, num){
ctx.strokeStyle = "black";
ctx.fillStyle = "red";
ctx.globalAlpha = 1.0;
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.lineTo(x3,y3);
ctx.lineTo(x4,y4);
ctx.lineTo(x1,y1);
ctx.lineWidth = 0.5;
ctx.fill();
ctx.stroke();
ctx.fillText(k,(x2+x3)/2,(y2+y3)/2);
}
……
我的希望是…
如果鼠标悬停在形状上,则显示有效k
如果鼠标单击形状,则转到具有有效k参数的其他url
请帮帮我。
谢谢
上次我做类似的事情时,我发现创建透明图像并将其放置在画布上更容易。
然后我使用了一个带有新添加的图像的图像映射。
结果很好,对我来说效果很好。
你所做的任何其他事情都只是复制浏览器已经内置的东西。
这是制作游戏的常见做法。它被称为"采摘"或"精灵采摘"。这里有一个很好的起点(在gamedev.stackexchange上(,涵盖了您的一些选项:
如何检测画布中精灵上的鼠标事件?
需要考虑的事项:
- 会有多少元素?数量越多,需要考虑的性能就越多
- 它们的形状有规律吗?如果它们是,如果它们在网格或其他规则间距中,你可能可以做一些简单的数学运算
- 你需要像素完美吗?也就是说,你真的需要它精确到最后一个像素吗?如果没有,您可以尝试路径检测
相关文章:
- 如何定义组件添加到DataItem的顺序
- React:向现有组件添加道具
- 向React中的高阶组件添加方法
- 在 React 中向组件添加新输入并跟踪状态
- Angular2 - 尝试将组件从父组件添加到子组件中
- extjs4 - 将自定义组件添加到容器
- 将react组件添加到contenteditable或innerhtml
- 反应多个组件添加项目
- 如何向 ReactJS 组件添加多个类
- 可以't将组件添加到dojox/layout/GridContainer
- KnockoutJs组件-添加默认类
- 如何使用React.js而不是JQuery.js克隆React组件(添加到其他地方)
- 向动态创建的组件添加事件绑定
- 如何在rteplugins下为richtext组件添加图像插件
- 为每个reactJS组件添加组件
- 如何向父窗口的组件添加字符
- React:如何给库中的组件添加一个props
- Highcharts提示?如何向hiccharts DOM组件添加类或id ?
- 用于向组件添加多个订阅的React mixin
- 如何在vue.js中为动态组件添加道具