如何在canvas中实现鼠标事件?
时间:2011-11-17
来源:互联网
canvas貌似是一个画布,在里面可以画线和圆,但是在圆上貌似不能实现鼠标事件,不知道该怎么办?
或者是说有什么办法可以用js实现有点有线而且有鼠标事件的功能?
大概就像这样子
http://map.baidu.com/subways/index.html?c=beijing
这个是用flash做的,我想用js做个相似点的
或者是说有什么办法可以用js实现有点有线而且有鼠标事件的功能?
大概就像这样子
http://map.baidu.com/subways/index.html?c=beijing
这个是用flash做的,我想用js做个相似点的
作者: live_for_miracle 发布时间: 2011-11-17
该回复于2011-11-17 13:23:45被管理员删除
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
|
#2楼 得分:0回复于:2011-11-17 15:58:24
|
作者: live_for_miracle 发布时间: 2011-11-17
JScript code
修正bug...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <style> html,body{ margin:0; padding:0;} </style> </head> <body> <canvas id="cvs" width="300" height="300" style="border:1px solid #333;">你的浏览器不支持canvas,狗日的IE。</canvas> <div id="log"></div> <script> var cvs = document.getElementById("cvs"); var ctx = cvs.getContext('2d'); if(ctx){ var objs = []; var CCircle = function(){ this.type = 'circle'; this.x = 0; this.y = 0; this.radius = 0; this.isHover = false; this.color = '#000'; }; var Draw = function(){ ctx.clearRect(0,0,cvs.width,cvs.height); for(var i=0;i<objs.length;i++){ if(objs[i].type='circle'){ ctx.beginPath(); ctx.lineWidth = 2; ctx.strokeStyle = objs[i].color; ctx.arc(objs[i].x,objs[i].y,objs[i].radius,0,Math.PI*2,false); ctx.stroke(); ctx.closePath(); } } }// end function for(var i=0;i<100;i++){ var c = new CCircle(); c.x = (Math.random()*300)|0; c.y = (Math.random()*300)|0; c.radius = 10; c.hover = function(){ this.color = "#f00"; Draw(); } c.out = function(){ this.color = "#000"; Draw(); } objs.push(c); }// end for Draw(); cvs.onmousemove = function(e){ var hasHover = false; for(var i=objs.length-1;i>-1;i--){ var c = objs[i]; if(((e.clientX-c.x)*(e.clientX-c.x)+(e.clientY-c.y)*(e.clientY-c.y)<=c.radius*c.radius) && (!hasHover)){ c.isHover = true; hasHover = true; c.hover && c.hover(); }else{ if(c.isHover){ c.isHover = false; c.out && c.out(); } }//end if }// end for }// end function } </script> </body> </html>
修正bug...
作者: Crazywa 发布时间: 2011-11-17
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28