ホームページ  >  記事  >  ウェブフロントエンド  >  html5 キャンバスは、マウスの回転_html5 チュートリアルのスキルに従う矢印を実装します。

html5 キャンバスは、マウスの回転_html5 チュートリアルのスキルに従う矢印を実装します。

WBOY
WBOYオリジナル
2016-05-16 15:51:422781ブラウズ

この記事の例は全員と共有されます

XML/HTML コードコンテンツをクリップボードにコピー
  1. >
  2. <html>
  3. <>
  4. <メタ charset="utf- 8" />
  5. " X-ua 互換 "
  6. コンテンツ = " ie =edge " /// > <title>キャンバスはマウスの回転に従う矢印を実装します < ; /
  7. タイトル
  8. > <スタイル>
  9. *{パディング: 0;マージン: 0}
  10. スタイル>
  11. >
  12. <ボディ>
  13. <キャンバス =
  14. "500"
  15. 身長="500" スタイル="ボーダー: 1px ソリッド #555; 表示: ブロック;マージン: 0 自動;">キャンバス > <スクリプト>
  16. var
  17. arrow=function () {
  18. this.x=0;
  19. this.y
  20. =0; this.color
  21. =
  22. "#f90" this.rolation
  23. =
  24. 0; }    
  25. var canvas=document.querySelector('canvas')
  26. var ctx=canvas.getContext('2d');   
  27. arrow.prototype.draw=関数 (ctx) {
  28. ctx.save();   
  29. ctx.translate(this.x,this.y);   
  30. ctx.rotate(this.rolation)
  31. ctx.fillStyle=this.color;   
  32. ctx.beginPath();   
  33. ctx.moveTo(0, 15);   
  34. ctx.lineTo(-50, 15);   
  35. ctx.lineTo(-50, -15);   
  36. ctx.lineTo(0,-15);   
  37. ctx.lineTo(0,-35);   
  38. ctx.lineTo(50,0);   
  39. ctx.lineTo(0,35);   
  40. ctx.closePath()
  41. ctx.fill();   
  42. ctx.restore();   
  43. }
  44. var Arrow=new arrow();   
  45. Arrow.x=canvas.width/2;   
  46. Arrow.y=canvas.height/2;   
  47. var c_x,c_y; // キャンバス座標の位置;
  48. var isMouseDown=false;   
  49. Arrow.draw(ctx)
  50. canvas.addEventListener('mousedown',function(e) {
  51. isMouseDown=true;   
  52. },false)
  53. canvas.addEventListener('mousemove',function(e) {
  54. if(isMouseDown==true){
  55. c_x=getPos(e).x-canvas.offsetLeft;   
  56. c_y=getPos(e).y-canvas.offsetTop;   
  57. //setInterval(drawFram,1000/60)
  58. requestAnimationFrame(drawFram)
  59. }
  60. },false)
  61. canvas.addEventListener('mouseup',function(e) {
  62. isMouseDown=false;   
  63. },false)
  64. 関数 drawFram(){
  65. var dx=c_x-Arrow.x;   
  66. var dy=c_y-Arrow.y;   
  67. Arrow.rolation=Math.atan2(dy,dx);   
  68. ctx.clearRect(0,0,canvas.width,canvas.height);   
  69. Arrow.draw(ctx)
  70. }
  71. 関数 getPos(e) {
  72. var マウス={x:0,y:0}
  73. var ee=e||event;   
  74. if(e.pageX||e.pageY){
  75. mouse.x=e.pageX;   
  76. mouse.y=e.pageY;   
  77. }else{
  78. mouse.x=e.pageX document.body.scrollLeft document.document.documentElement.scrollLeft;
  79. mouse.y=e.pageY document.body.scrollTop document.document.documentElement.scrollTop;
  80. マウスを返す
  81. スクリプト> ボディ> html> デモのアドレス:
http://codepen.io/jonechen/pen/eZpgWd

ナンセンスではありません。すぐにデモに進みましょう。この効果を達成するのは複雑ではありませんが、スズメと同じくらい小さく、関係する主な知識ポイントは次のとおりです。 1. キャンバスの基本的な描画;

3. キャンバスでの三角関数の基本的な応用;

以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。