• 模拟 太阳系的动画
<!DOCTYPE html>
<html><body><canvas id="canvas" width="300" height="300" style="border:1px solid">Your browser does not support the canvas element.</canvas><script type="text/javascript">var sun = new Image();//创建图像对象1 = 太阳var moon = new Image();//创建图像对象2 = 月球var earth = new Image();//创建图像对象3 = 地球function init(){sun.src = 'https://mdn.mozillademos.org/files/1456/Canvas_sun.png';moon.src = 'https://mdn.mozillademos.org/files/1443/Canvas_moon.png';earth.src = 'https://mdn.mozillademos.org/files/1429/Canvas_earth.png';window.requestAnimationFrame(draw);//动画命令}function draw() {var ctx = document.getElementById('canvas').getContext('2d');ctx.globalCompositeOperation = 'destination-over';//谁先画,谁在上方(覆盖关系: 新图形画在 前一个图形的后面)ctx.clearRect(0,0,300,300); //清空画布,要更新动画, 必须清空画布 clear canvasctx.fillStyle = 'rgba(0,0,0,0.3)';//指定填充颜色ctx.strokeStyle = 'rgba(0,153,255,0.4)';//指定绘线颜色ctx.save();//保存状态 栈1 = 最初状态,原点在(0,0),没有移动过// 画地球 Earthctx.translate(150,150);//把画布原点 从(0,0) 移动到 (150,150)var time = new Date();//获取当前的日期和时间ctx.rotate( ((2*Math.PI)/60)*time.getSeconds() + ((2*Math.PI)/60000)*time.getMilliseconds() );//从具体的日期和时间中提取出秒和毫秒字段,把顺时针旋转角度和 当前时间的 秒和毫秒变化 关联在一起ctx.translate(105,0);//第二次移动原点,(150,150)水平向右移动105,把地球放在 绘线上ctx.fillRect(0,-12,50,24); // 画1个矩形,作为地球图形上的另一半遮盖住,当作阴影 Shadowctx.drawImage(earth,-12,-12);//把地球图形,添加到画布上//画月球 Moonctx.save();//保存当前的状态 栈2ctx.rotate( ((2*Math.PI)/6)*time.getSeconds() + ((2*Math.PI)/6000)*time.getMilliseconds() );//月球旋转角度,和当前时间变换关联在一起ctx.translate(0,28.5);//第三次 移动原点,(150+105,150)下移 28.5 (150+105,150+28.5)ctx.drawImage(moon,-3.5,-3.5);//画月球//画地球旋转轨道ctx.restore();//恢复状态,当前状态=栈2ctx.restore();//恢复状态,当前状态=栈1=最初状态 (原点没有移动过)ctx.beginPath();ctx.arc(150,150,105,0,Math.PI*2,false); // Earth orbit,关联关系,半径 = 地球相对第二原点(150,150) 向右移动的距离ctx.stroke();//绘线//画太阳  ctx.drawImage(sun,0,0,300,300);window.requestAnimationFrame(draw);//更新动画命令}init();//重新获取图片资源和进行更新动画命令,图片资源不放在这里面,直接更新动画 也可以,效果不变</script></body>
</html>
形成的动图 图形相对关系 原点移动分析

  • 知识拓展:
  • 获取当前日期和时间: new Date()
    • Date 对象用于: 处理日期和时间。
    • 定义 Date 对象: 通过 new 关键词
      • 以下代码定义了名为 myDate 的 Date 对象:
      • var myDate=new Date() ;
  • 注释:Date 对象 自动使用 当前的日期和时间 作为其初始值。
  • 获取秒: getSeconds() 方法
    • 返回秒: getSeconds() 方法可返回 时间的秒。
    • 语法:dateObject.getSeconds()
    • 返回值: 一个整数 ( 0 ~ 59 之间)
      • dateObject 的分钟字段,以本地时间显示。
  • 获取毫秒: getMilliseconds() 方法
    • 1秒(s)=1000毫秒(ms)
    • getMilliseconds() 方法可返回 时间的毫秒。
    • 语法: dateObject.getMilliseconds()
    • 返回值: 一个整数 (0 ~ 999 之间)
    • dateObject 的毫秒字段,以本地时间显示。

  • 原图链接 保存:
  • 太阳:
  • 地球:

  • 月球:

  • 参考文档: MDN Canvas教程

  • 感谢:♥♥♥ 如果这篇文章对您有帮助的话,可以点赞、评论、关注,鼓励下作者哦,感谢阅读 O(∩_∩)O哈哈~

  • 转载 请注明出处 ,Thanks♪(・ω・)ノ

    • 作者:Hey_Coder
    • 来源:CSDN
    • 原文:https://blog.csdn.net/VickyTsai/article/details/90453691

【canvas 太阳系的动画】相关推荐

  1. 最简单太阳系H5动画canvas详解 零基础可入

    最简单太阳系H5动画canvas详解 零基础可入 最终结果:(实际为动画效果,金星绕轨道转动) 页面准备/html 要使用canvas,需要首先在页面中要绘制的位置放入canvas标签元素,在后期的绘 ...

  2. java 九大行星运行_html5 canvas太阳系九大行星运行动态图代码

    特效描述:html5 canvas 太阳系 九大行星运行 动态图代码.html5 canvas这个动画加上了每个行星的名称,只要鼠标移入目标行星就会显示. 代码结构 1. HTML代码 你浏览器不支持 ...

  3. MDN上的Canvas太阳系例子我终于彻底看懂了

    来自MDN上的Canvas动画例子–太阳系动画 本文将从例子源码入手,带你从我个人角度理解Canvas太阳系动画的实现,并对一些api做出介绍解释,首先说明我也是刚学习的Canvas,有出错的地方还请 ...

  4. 7个华丽的基于Canvas的HTML5动画

    说起HTML5,可能让你印象更深的是其基于Canvas的动画特效,虽然Canvas在HTML5中的应用并不全都是动画制作,但其动画效果确实让人震惊.本文收集了7个最让人难忘的HTML5 Canvas动 ...

  5. html 画动画效果,html5 canvas绘制曲线动画特效

    特效描述:html5 canvas绘制 曲线动画特效. 代码结构 1. HTML代码 Balls Size Speed Delay Go! Presets: Atomic Flower Spiro Y ...

  6. 基于canvas的骨骼动画

    最近学习到了一种关于canvas的骨骼动画,听这个名字就知道他和canvas之前的动画不同,不知道你有没有兴趣了解一下呢? 关于骨骼动画最初是无意间在腾讯团队上看到的,但是由于他官网的教程是在是少之又 ...

  7. php 3d animation,如何用HTML5的Canvas制作3D动画效果

    HTML5的诞生给web前端界带来了不小轰动,像什么动画旋转.图片滑块.图片轮播等等这些3D特效,也引发了不少朋友想要学习HTML5的好奇心.最近我一直在做canvas动画效果,发现canvas这个东 ...

  8. canvas 之星空动画

    最近看到位博主的博客背景图很是炫酷,查找下资料了解是canvas实现效果,今天就来看看详细解剖下吧. 实现思路 首先了解下canvas中的动画原理?canvas中的动画其实是通过不断的重绘来实现动起来 ...

  9. Canvas基础-粒子动画Part2

    紧接上一篇文章 Canvas基础-粒子动画Part1 其实这篇早在一个星期之前就应该发了,无奈事情太多,而且我又跑去写微信公众号了. 粒子动起来 有了上一篇的基础,我们已经可以获得粒子,并将轮廓显示在 ...

  10. html银河特效编码,html5 canvas银河星系动画特效

    特效描述:html5 canvas 银河星系动画特效.html5 canvas绘制闪闪发光移动的银河星系背景动画特效.(上传服务器正常演示,本地无法直接预览) 代码结构 1. 引入JS 2. HTML ...

最新文章

  1. 精读《React PowerPlug 源码》
  2. php sql server配置文件路径,云服务器初始化 第六章:更改MySQL数据文件存放路径...
  3. python自动化测试数据驱动_利用Python如何实现数据驱动的接口自动化测试
  4. 对线性回归,logistic回归和一般回归的认识
  5. ML之LiR:机器学习经典算法之线性回归算法LiR的简介、使用方法、经典案例之详细攻略
  6. Matlab随笔之求解线性方程
  7. 信息学奥赛一本通 1149:最长单词2 | OpenJudge NOI 1.13 16
  8. 数字蝶变,离不开云原生“苍穹”
  9. 虚拟现实果真来了吗?
  10. Linux 文件权限、用户权限和用户组管理vim的一些基本使用技巧
  11. Arduino Atmega328P烧写bootloader及熔丝
  12. oracle导出pck文件,Oracle sqlloader自动化导入迁移工具—可批量生成千万控制文件与批处理文件|一键执行(推荐)...
  13. 耦合电感元件的相关概念
  14. JAVA-Servlet项目接入支付宝网站支付
  15. 物联网通信技术第9章 异构网络协同通信
  16. 考研线性代数手写笔记2 矩阵
  17. Hadoop3.2.1 【 YARN 】源码分析 : NodeStatusUpdaterImpl概述
  18. 第七篇章——垃圾回收概念及相关算法
  19. python 朴素贝叶斯算法
  20. org.springframework.context.annotation.AnnotationConfigApplicationContext has not been refreshed yet

热门文章

  1. 五个小时学会Asp连接access添加,删除,修改
  2. 计划的主体部分应有哪些内容_计划练习题
  3. Aurora Engine 游戏引擎入门 21(统一渲染架构 FIXED)
  4. 携手强化「内容审核」能力,融云与数美科技达成战略合作
  5. C#如何输入对号字符串
  6. 使用 Burp Suite 暴力破解密码 撞库攻击 从0到1手摸手教学
  7. 在面试中脱颖而出的流程全解
  8. ECCV 2020 目标检测论文大盘点(49篇论文)
  9. pycharm方法中划线解决方法
  10. 天梯赛 - 一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字