html5 canvas实现跟随鼠标旋转的箭头_HTML5教程-查字典教程网
html5 canvas实现跟随鼠标旋转的箭头
html5 canvas实现跟随鼠标旋转的箭头
发布时间:2016-12-27 来源:查字典编辑
摘要:本文实例为大家分享了XML/HTMLCode复制内容到剪贴板canvas实现跟随鼠标旋转的箭头*{padding:0;margin:0}va...

本文实例为大家分享了

XML/HTML Code复制内容到剪贴板 <!DOCTYPEhtml> <html> <head> <metacharset="utf-8"/> <metahttp-equiv="X-UA-Compatible"content="IE=edge"/> <title>canvas实现跟随鼠标旋转的箭头</title> <style> *{padding:0;margin:0} </style> </head> <body> <canvaswidth="500"height="500"style="border:1pxsolid#555;display:block;margin:0auto;"></canvas> <script> vararrow=function(){ this.x=0; this.y=0; this.color="#f90" this.rolation=0; } varcanvas=document.querySelector('canvas') varctx=canvas.getContext('2d'); arrow.prototype.draw=function(ctx){ ctx.save(); ctx.translate(this.x,this.y); ctx.rotate(this.rolation) ctx.fillStyle=this.color; ctx.beginPath(); ctx.moveTo(0,15); ctx.lineTo(-50,15); ctx.lineTo(-50,-15); ctx.lineTo(0,-15); ctx.lineTo(0,-35); ctx.lineTo(50,0); ctx.lineTo(0,35); ctx.closePath() ctx.fill(); ctx.restore(); } varArrow=newarrow(); Arrow.x=canvas.width/2; Arrow.y=canvas.height/2; varc_x,c_y;//相对于canvas坐标的位置; varisMouseDown=false; Arrow.draw(ctx) canvas.addEventListener('mousedown',function(e){ isMouseDown=true; },false) canvas.addEventListener('mousemove',function(e){ if(isMouseDown==true){ c_x=getPos(e).x-canvas.offsetLeft; c_y=getPos(e).y-canvas.offsetTop; //setInterval(drawFram,1000/60) requestAnimationFrame(drawFram) } },false) canvas.addEventListener('mouseup',function(e){ isMouseDown=false; },false) functiondrawFram(){ vardx=c_x-Arrow.x; vardy=c_y-Arrow.y; Arrow.rolation=Math.atan2(dy,dx); ctx.clearRect(0,0,canvas.width,canvas.height); Arrow.draw(ctx) } functiongetPos(e){ varmouse={x:0,y:0} varee=e||event; if(e.pageX||e.pageY){ mouse.x=e.pageX; mouse.y=e.pageY; }else{ mouse.x=e.pageX+document.body.scrollLeft+document.document.documentElement.scrollLeft; mouse.y=e.pageY+document.body.scrollTop+document.document.documentElement.scrollTop; } returnmouse; } </script> </body> </html>

DEMO地址:http://codepen.io/jonechen/pen/eZpgWd

不废话,直接上DEMO了,这个效果实现起来并不复杂,但是麻雀随小,五脏俱全,主要涉及到的知识点有:

1、canvas的基本绘图;

2、js各个事件的监听;

3、js动画;

4、三角函数结合js在canvas中的基本应用;

以上就是本文的全部内容,希望对大家的学习有所帮助。

原文:http://www.cnblogs.com/jone-chen/p/5243439.html

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新HTML5教程学习
    热门HTML5教程学习
    网页设计子分类