Heim  >  Artikel  >  Web-Frontend  >  HTML5-Canvas implementiert Pfeile, die den Tutorialfähigkeiten der Mausrotation_html5 folgen

HTML5-Canvas implementiert Pfeile, die den Tutorialfähigkeiten der Mausrotation_html5 folgen

WBOY
WBOYOriginal
2016-05-16 15:51:422780Durchsuche

Die Beispiele in diesem Artikel werden mit allen geteilt

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. >
  2. <html>
  3. <Kopf>
  4. <meta charset="utf- 8" />
  5. „ /// >
  6. <title>canvas implementiert Pfeile, die der Mausdrehung folgen < ; /Titel>  <
  7. Stil
  8. > *{padding: 0;margin: 0}  Stil>
  9.  
  10. Kopf>
  11. <Körper>
  12. <Leinwand Breite=
  13. "500"
  14. Höhe="500"
  15. Stil
  16. ="border: 1px solid #555; display: block;margin: 0 auto;">canvas >  <Skript> var Pfeil=Funktion () {
  17.  
  18. this.x=0
  19. this.y=0;  
  20. diese.farbe
  21. ="#f90"  
  22. this.ration
  23. =0 }    
  24.         var canvas=document.querySelector('canvas')   
  25.         var ctx=canvas.getContext('2d');   
  26.         arrow.prototype.draw=function (ctx) {   
  27.             ctx.save();   
  28.             ctx.translate(this.x,this.y);   
  29.             ctx.rotate(this.rulation)   
  30.             ctx.fillStyle=this.color;   
  31.             ctx.beginPath();   
  32.             ctx.moveTo(0, 15);   
  33.             ctx.lineTo(-50, 15);   
  34.             ctx.lineTo(-50, -15);   
  35.             ctx.lineTo(0,-15);   
  36.             ctx.lineTo(0,-35);   
  37.             ctx.lineTo(50,0);   
  38.             ctx.lineTo(0,35);   
  39.             ctx.closePath()   
  40.             ctx.fill();   
  41.             ctx.restore();   
  42.         }   
  43.         var Pfeil=neu arrow();   
  44.         Arrow.x=canvas.width/2;   
  45.         Arrow.y=canvas.height/2;   
  46.            
  47.         var c_x,c_y; //相对于canvas坐标的位置;   
  48.         var isMouseDown=false;   
  49.         Arrow.draw(ctx)   
  50.         canvas.addEventListener('mousedown',function(e) {   
  51.             isMouseDown=true;   
  52.         },falsch)   
  53.         canvas.addEventListener('mousemove',function(e) {   
  54.             if(isMouseDown==true){   
  55.                                                         //setInterval(drawFram,1000/60)   
  56.                 requestAnimationFrame(drawFram)                }            },false)   
  57.         canvas.addEventListener('mouseup',function(e) {   
  58.             
  59. isMouseDown
  60. =
  61. false
  62. ;   
  63.         },false)   
  64.         function drawFram(){                var dx=
  65. c_x
  66. -Arrow.x;   
  67.             var 
  68. dy
  69. =c_y-Arrow.y;                
  70. Arrow.rolation
  71. =Math.atan2(dy,dx);                ctx.clearRect(0,0,canvas.width,canvas.height);   
  72.             Arrow.draw(ctx)            }            function getPos(e) {   
  73.             var 
  74. Maus
  75. ={x:0,y:0}   
  76.             var 
  77. e
  78. e
  79. =e||event;   
  80.         
  81.             if(e.pageX||e.pageY){   
  82.                 mouse.x=e.pageX;   
  83.                 
  84. mouse.y
  85. =e.pageY;   
  86.             }sonst{
  87. mouse.x=e.pageX document.body.scrollLeft document.document.documentElement.scrollLeft;
  88. mouse.y=e.pageY document.body.scrollTop document.document.documentElement.scrollTop;
  89.                                                           
  90. zurück mit der Maus;
  91.                                                              
  92.  
  93. Skript
  94. > 
  95. Körper
  96. >
  97. html
  98. > DEMO-Adresse: http://codepen.io/jonechen/pen/eZpgWd
Kein Unsinn, gehen wir direkt zur DEMO. Dieser Effekt ist nicht kompliziert, aber er ist so klein wie ein Spatz und verfügt über alle darin enthaltenen inneren Organe:

1. Grundlegendes Zeichnen von JS-Ereignissen 4 Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.

Originaltext:

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn