首頁 >web前端 >H5教程 >html5 canvas實作跟隨滑鼠旋轉的箭頭_html5教學技巧

html5 canvas實作跟隨滑鼠旋轉的箭頭_html5教學技巧

WBOY
WBOY原創
2016-05-16 15:51:422810瀏覽

本文實例為大家分享了

XML/HTML Code複製內容到剪貼簿
  1. html>  
  2. html>  
  3.  head>    
  4.   meta charset charset />    
  5.   meta http-equiv -UA-Compatible" content="IE=edge" "IE=edge" 
  6.        title>canvastitle>    
  7.   style>  
  8.     *{padding: 0;margin: 0}   
  9.     style>    
  10.  head>    
  11.       身體
  12. >
  13.        canvas width width 🎜> height="500" style >"border: 1px solid #555; display: block;margin: 0 auto;">>
  14. >can| >       
  15. script>           var 
  16. arrow=function=function=
  17.             this.x=0=
  18.             this.y=0=0
  19. =0            this.color=
  20. "#f90"
  21. ="#f90"=            this.rolation=0=0=         }    
  22.         var 營業=文件=
  23. 文件
  24. =文檔         var ctx=
  25. canvas
  26. =canvas=canvas=
  27. canvas
  28. =
  29. canvas
  30. =
  31. canvas
  32. =
  33. canvas
  34. =canvas=canvas
  35.         
  36. arrow.prototype.draw
  37. =
  38.             ctx.save();   
  39.             ctx.translate(this.x,this.y);   
  40.             ctx.rotate(this.rolation)   
  41.             
  42. ctx.fillStyle
  43. =
  44. =
  45. 這樣   
  46.             ctx.beginPath();   
  47.             ctx.moveTo(0, 15);   
  48.             ctx.lineTo(-50, 15);   
  49.             ctx.lineTo(-50, -15);   
  50.             ctx.lineTo(0,-15);                ctx.lineTo(0,-35);                ctx.lineTo(50,0);   
  51.             ctx.lineTo(0,35);                ctx.closePath()                ctx.fill();   
  52.             ctx.restore();            }            var 
  53. 箭頭=
  54. =
  55. = 箭頭();            
  56. Arrow.x=
  57. 透明度=
  58. 透明度=透明度.=透明度.=
  59. 透明度.=透明度=透明度.            Arrow.y=身高.height/2;                        var c_x,c_y; //相對於canvas座標的位置;            var isMouseDown=false=false;            Arrow.draw(ctx)            canvas.addEventListener('mousedown',function(e) {                isMouseDown=true;            },假)  
  60.         canvas.addEventListener('mousemove',function(e) {   
  61.             if(isMouseDown==true){   
  62. ==true){    ==true){                    c_x
  63. =   
  64.                 c_y=c_y
  65. =                 //setInterval(drawFram,1000/60)   
  66.                 requestAnimationFrame(drawFram)   
  67.             }   
  68.         },假)   
  69.         canvas.addEventListener('mouseup',function(e) {   
  70.             isMouseDown=false
  71. =
  72. false
  73. =
  74. false
  75. =
  76. false=false=點   
  77.         },假)            函數drawFram(){                var 
  78. dx
  79. =c_x-Arrow.x;                var 
  80. dy
  81. =
  82.             Arrow.rolation
  83. =
  84. 數學
  85. .atan2(dy,dx);   
  86.             ctx.clearRect(0,0,canvas.width,canvas.height);                Arrow.draw(ctx)   
  87.         }            函數 getPos(e) {   
  88.             var 
  89. 滑鼠
  90. ={x:0,y:0}  
  91. ={x:0,y:0} 
  92.             var 
  93. eee
  94. e
  95.         
  96.             if(e.pageX||e.pageY){   
  97.                 mouse.x=e.pageX;                    mouse.y=e.pageY;                }else{   
  98.                 mouse.x=c. >
  99.                 
  100. mouse.y=c. >             }   
  101.             return mouse;   
  102.         }   
  103.     
  104. script>    >    
  105.  body>  
  106. 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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn