Canvas绘制星球轨迹移动

举报
tea_year 发表于 2021/12/30 00:24:47 2021/12/30
【摘要】 视频课堂https://edu.csdn.net/course/play/7621 在开发在线游戏时,绘制动画是非常重要的。本节介绍一个使用Canvas API实现的动画实例——小型太阳系模型,由地球、月球和太阳组成。在漆黑的夜空中,地球围着太阳转、月球围绕地球转. p ( 1 )定期绘图,也就是每隔一段时间就调用绘图函数进...

视频课堂https://edu.csdn.net/course/play/7621

在开发在线游戏时,绘制动画是非常重要的。本节介绍一个使用Canvas API实现的动画实例——小型太阳系模型,由地球、月球和太阳组成。在漆黑的夜空中,地球围着太阳转、月球围绕地球转.

p 1 )定期绘图,也就是每隔一段时间就调用绘图函数进行绘图。动画当时多次绘图实现的,一次绘图只能实现静态图像。
p 可以使用 setInterval () 方法设置一个定时器,语法如下:

setInterval(函数名,时间间隔)

p 时间间隔的单位是 ms ,每经过指定的时间间隔系统都会自动调用指定的函数。
p 2 )清除先前绘制的所有图形。物体已经移动开来,可原来的位置上还保留先前绘制的图形,这样当然不行。解决这个问题最简单的方法是使用 clearRect 方法清除画布中的内容。 

p 在设计小型太阳系模型动画实例之前需要准备 3 个图片分别用于表现地球、月球和太阳。本例的画面比较小,因此这 3 个图片不需要很精美。这里使用 sun.png 表现太阳、使用 eartrh.png 表现地球使用 moon.png 表现月球,图它们保存在 images 目录下 
JavaScript 代码中定义 3 Image 对象,分别用于显示 sun.png eartrh.png moon.png 。然后定义一个 init () 函数,初始化 Image 对象,并设置定时器,代码如下

本例的背景就是漆黑的夜空,因此简单地画一个黑色的矩形就可以了



  
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. <canvas id="canvas" width="500" height="500"></canvas>
  9. <script>
  10. var sun=new Image();
  11. var earth=new Image();
  12. var moon=new Image();
  13. function init(){
  14. sun.src="img/sun.jpg";
  15. earth.src="img/earth.jpg";
  16. moon.src="img/moon.jpg";
  17. setInterval(draw,100);
  18. }
  19. function draw(){
  20. var c=document.getElementById("canvas");
  21. var ctx=c.getContext("2d");
  22. ctx.clearRect(0,0,500,500);
  23. ctx.fillStyle='rgba(0,0,0)';
  24. ctx.fillRect(0,0,500,500);
  25. ctx.save();
  26. // //3绘制太阳;
  27. ctx.drawImage(sun,200,200,50,50);
  28. //4.绘制地球的轨道;
  29. ctx.strokeStyle='red';
  30. ctx.beginPath();
  31. ctx.arc(225,225,150,2*Math.PI,false);
  32. ctx.stroke();
  33. ctx.closePath();
  34. }
  35. window.addEventListener("load",init(),true);
  36. </script>
  37. </body>
  38. </html>


文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/78753978

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。