Rumah  >  Artikel  >  hujung hadapan web  >  html5 canvas melaksanakan anak panah yang mengikuti kemahiran tutorial rotation_html5 tetikus

html5 canvas melaksanakan anak panah yang mengikuti kemahiran tutorial rotation_html5 tetikus

WBOY
WBOYasal
2016-05-16 15:51:422744semak imbas

Contoh dalam artikel ini dikongsi dengan semua orang

Kod XML/HTMLSalin kandungan ke papan keratan
  1. >
  2. <html>
  3. <kepala>
  4. <meta charset="utf- 8" />
  5. " X-ua-serasi "
  6. Kandungan = " iaitu = tepi " /// > <tajuk>kanvas melaksanakan anak panah yang mengikuti putaran tetikus < ; /
  7. tajuk
  8. >  <gaya>
  9. *{padding: 0;margin: 0}
  10.  gaya>
  11.  
  12. kepala>
  13. <badan>
  14. <kanvas lebar=
  15. "500"
  16. tinggi="500" gaya="sempadan: 1px pepejal #555; paparan: blok; margin: 0 auto;">kanvas >  <skrip>
  17. var
  18. anak panah=fungsi () {
  19.  
  20. ini.x=0
  21. ini.y=0;  
  22. warna ini
  23. ="#f90"  
  24. peranan ini
  25. =0 }    
  26.         var kanvas=dokumen.querySelector('kanvas')   >
  27.         var ctx=kanvas.getContext('2d');   
  28.         arrow.prototype.draw=fungsi (ctx) {   
  29.             ctx.save();   
  30.             ctx.translate(this.x,this.y);   
  31.              ctx.rotate(this.rolation)   
  32.             ctx.fillStyle=ini.warna;   
  33.             ctx.beginPath();   
  34.             ctx.moveTo(0, 15);   
  35.             ctx.lineTo(-50, 15);   
  36.             ctx.lineTo(-50, -15);   
  37.             ctx.lineTo(0,-15);   
  38.             ctx.lineTo(0,-35);   
  39.             ctx.lineTo(50,0);   
  40.             ctx.lineTo(0,35);   
  41.             ctx.closePath()   
  42.             ctx.fill();   
  43.             ctx.restore();   
  44.         }   
  45.         var Anak panah=baharu anak panah();   
  46.         Anak panah.x=kanvas.lebar/2;   
  47.         Arrow.y=kanvas.height/2;   
  48.            
  49.         var c_x,c_y; //相对于canvas坐标的位置;   
  50.         var isMouseDown=palsu;   
  51.         Arrow.draw(ctx)   
  52.         canvas.addEventListener('mousedown', function(e) {   
  53.              isMouseDown=benar;   
  54.         },salah)   
  55.         canvas.addEventListener('mousemove', function(e) {   
  56.              jika(isMouseDown==benar){   
  57.                 c_x=getPos(e).x-canvas.offsetLeft;   
  58.                 c_y=getPos(e).y-canvas.offsetTop;   
  59.                 //setInterval(drawFram,1000/60)   
  60.                 permintaanAnimationFrame(drawFram)   
  61.             }   
  62.         }, salah)   
  63.         canvas.addEventListener('mouseup', function(e) {   
  64.             isMouseDown=palsu;   
  65.         }, salah)   
  66.         fungsi drawFram(){   
  67.              var dx=c_x-Arrow.x;   
  68.              var dy=c_y-Arrow.y;   
  69.             Arrow.rolation=Math.atan2(dy,dx);   
  70.              ctx.clearRect(0,0,canvas.width,canvas.height);   
  71.             Anak panah.draw(ctx)   
  72.         }   
  73.         fungsi getPos(e) {   
  74.              var tetikus={x:0,y:0}   
  75.              var ee=e||acara;   
  76.         
  77.             jika(e.pageX||e.pageY){   
  78.                 tetikus.x=e.pageX;   
  79.                 mouse.y=e.pageY;   
  80.             }lain{
  81. tetikus.x=e.pageX document.body.scrollLeft document.document.documentElement.scrollLeft;
  82. mouse.y=e.pageY document.body.scrollTop document.document.documentElement.scrollTop;                                                            
  83. kembalikan tetikus;
  84.                                                               
  85.  
  86. skrip>
  87.   badan
  88. >
  89. html
  90. >
  91. Alamat DEMO: http://codepen.io/jonechen/pen/eZpgWd
  92. Bukan omong kosong, mari terus ke DEMO Kesan ini tidak rumit untuk dicapai, tetapi ia adalah sekecil burung pipit dan mempunyai semua organ dalaman yang terlibat adalah:
1. Lukisan asas kanvas; 2. Pemantauan pelbagai acara js;
Di atas adalah keseluruhan kandungan artikel ini, saya harap ia akan membantu kajian semua orang.

Teks asal: http://www.cnblogs.com/jone-chen/p/5243439.html

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn