html5的canvas旋转动画

以你之姓@ 2022-07-13 06:16 414阅读 0赞
  1. <!DOCTYPE HTML>
  2. <html>
  3. <body>
  4. <canvas id="myCanvas" width="500" height="500">your browser does not support the canvas tag</canvas>
  5. <script type="text/javascript">
  6. var deg = 0;
  7. var r = 30;
  8. var rl = 100;
  9. function drawTaiji() {
  10. var canvas = document.getElementById('myCanvas');
  11. var context = canvas.getContext('2d');
  12. var colorA = "rgb(0, 0, 0)";
  13. var colorB = "red";
  14. var px =Math.sin(deg)*r;
  15. var py =Math.cos(deg)*r;
  16. context.clearRect(0, 0, 300, 300);
  17. context.beginPath();
  18. context.fillStyle = colorA;
  19. context.arc(rl, rl, 60, 0.5 * Math.PI +deg, 1.5 * Math.PI +deg, true);
  20. context.closePath();
  21. context.fill();
  22. context.fillStyle = colorB;
  23. context.beginPath();
  24. context.arc(rl, rl, 60, 1.5* Math.PI +deg, 0.5 * Math.PI +deg, true);
  25. context.closePath();
  26. context.fill();
  27. context.fillStyle = colorB;
  28. context.beginPath();
  29. context.arc(rl+px, rl-py, 30, 0.5 * Math.PI + deg, 1.5 * Math.PI + deg, true);
  30. context.closePath();
  31. context.fill();
  32. context.fillStyle = colorA;
  33. context.beginPath();
  34. context.arc(rl-px, rl+py, 30, 1.5 * Math.PI + deg, 0.5 * Math.PI + deg, true);
  35. context.closePath();
  36. context.fill();
  37. context.fillStyle = colorA;
  38. context.beginPath();
  39. context.arc(rl+px, rl-py, 8, 0, 2 * Math.PI, true);
  40. context.closePath();
  41. context.fill();
  42. context.fillStyle = colorB;
  43. context.beginPath();
  44. context.arc(rl-px, rl+py, 8, 0, 2 * Math.PI, true);
  45. context.closePath();
  46. context.fill();
  47. deg +=0.1;
  48. }
  49. setInterval(drawTaiji, 100);
  50. </script> </p>
  51. <p></body>
  52. </html>
  53. <!DOCTYPE HTML>
  54. <html>
  55. <body>
  56. <canvas id="myCanvas" width="500" height="500" >your browser does not support the canvas tag </canvas>
  57. <script type="text/javascript">
  58. var canvas = document.getElementById('myCanvas');
  59. var ctx = canvas.getContext("2d");
  60. var angle = 0;
  61. var count = 360;
  62. var clrA = '#000';
  63. var clrB = 'red';
  64. function taiji(x, y, radius, angle, wise) {
  65. angleangle = angle || 0;
  66. wisewise = wise ? 1 : -1;
  67. ctx.save();
  68. ctx.translate(x, y);
  69. ctx.rotate(angle);
  70. ctx.fillStyle = clrA;
  71. ctx.beginPath();
  72. ctx.arc(0, 0, radius, 0, Math.PI, true);
  73. ctx.fill();
  74. ctx.beginPath();
  75. ctx.fillStyle = clrB;
  76. ctx.arc(0, 0, radius, 0, Math.PI, false);
  77. ctx.fill();
  78. ctx.fillStyle = clrB;
  79. ctx.beginPath();
  80. ctx.arc(wise * -0.5 * radius, 0, radius / 2, 0, Math.PI * 2, true);
  81. ctx.fill();
  82. ctx.beginPath();
  83. ctx.fillStyle = clrA;
  84. ctx.arc(wise * +0.5 * radius, 0, radius / 2, 0, Math.PI * 2, false);
  85. ctx.arc(wise * -0.5 * radius, 0, radius / 10, 0, Math.PI * 2, true);
  86. ctx.fill();
  87. ctx.beginPath();
  88. ctx.fillStyle = clrB;
  89. ctx.arc(wise * +0.5 * radius, 0, radius / 10, 0, Math.PI * 2, true);
  90. ctx.fill();
  91. ctx.restore();
  92. }
  93. loop = setInterval(function () {
  94. beginTag = true;
  95. ctx.clearRect(0, 0, canvas.width, canvas.height);
  96. taiji(200, 200, 50, Math.PI * (angle / count) * 2, true);
  97. //taiji(350, 350, 50, Math.PI * ((count - angle) / count) * 2, false);
  98. angle = (angle + 5) % count;
  99. }, 50);
  100. </script> </p>
  101. <p></body>
  102. </html>

发表评论

表情:
评论列表 (有 0 条评论,414人围观)

还没有评论,来说两句吧...

相关阅读