html5,canvas,箭头旋转,鼠标跟随本文实例为大家分享了 XML/HTML Code复制内容到剪贴板     - <!DOCTYPE html>   
     - <html>   
     -  <head>     
     -   <meta charset="utf-8" />     
     -   <meta http-equiv="X-UA-Compatible" content="IE=edge" />     
     -   <title>canvas实现跟随鼠标旋转的箭头</title>     
     -   <style>   
     -     *{padding: 0;margin: 0}    
     -     </style>     
     -  </head>     
     -  <body>     
     -   <canvas width="500" height="500" style="border: 1px solid #555; display: block;margin: 0 auto;"></canvas>     
     -   <script>   
     -         var arrow=function () {    
     -             this.x=0;     
     -             this.y=0;    
     -             this.color="#f90"   
     -             this.rolation=0;    
     -         }     
     -         var canvas=document.querySelector('canvas')    
     -         var ctx=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();    
     -         }    
     -         var Arrow=new arrow();    
     -         Arrow.x=canvas.width/2;    
     -         Arrow.y=canvas.height/2;    
     -             
     -         var c_x,c_y; //相对于canvas坐标的位置;    
     -         var isMouseDown=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)    
     -         function drawFram(){    
     -             var dx=c_x-Arrow.x;    
     -             var dy=c_y-Arrow.y;    
     -             Arrow.rolation=Math.atan2(dy,dx);    
     -             ctx.clearRect(0,0,canvas.width,canvas.height);    
     -             Arrow.draw(ctx)    
     -         }    
     -         function getPos(e) {    
     -             var mouse={x:0,y:0}    
     -             var ee=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;    
     -             }    
     -             return mouse;    
     -         }    
     -     </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,canvas,箭头旋转,鼠标跟随    
 
 |