简单的canvas动画原理一般就是如下步骤:

setInterval(
   function(){
       draw(ctx);
       update(canvas.width,canvas.height);
   },
   50
);

深入了解setInterval

一. draw(ctx);
1.清空 canvas
除非接下来要画的内容会完全充满 canvas (例如背景图),否则你需要清空所有。最简单的做法就是用 clearRect 方法。
2.保存 canvas 状态
如果你要改变一些会改变 canvas 状态的设置(样式,变形之类的),又要在每画一帧之时都是原始状态的话,你需要先保存一下。ctx.save();
3.绘制被动画的图形
绘制要被动画的图形
4.恢复 canvas 状态
如果已经保存了 canvas 的状态,可以先恢复它(ctx.restore();),然后重绘下一帧。

二.update(canvas.width,canvas.height)

改变动画的原理是:位置的改变(运用物理学原理,初始化加速度vx(x轴的加速度),vy(y轴的加速度))加速度可以是随机vx:Math.random()*5+10,vy:Math.random()*5+10

1.首先令图形的位置等于加速度

x +=vx;y+=vy;

2.根据你的需求进行判断

2.1图形在运动时不能超出canvas画布的宽

if(x-图形的半径<=0){

vx=-vx;

x=半径;

}

if(x+图形的半径<=canvas.width){

vx=-vx;

x= canvas.width-半径;

}

简单的canvas动画原理相关推荐

  1. 制作一个简单的canvas动画

    制作一个简单的canvas动画 作者:旺仔 一上来先话不多说上代码,代码能看的懂得,ok,就当我下面所有的内容为废话,代码看的不太懂的,没关系我会一点一点让你懂,不过前提是你有一定的html+css+ ...

  2. 丘比特之箭——简单的canvas动画

    刚学HTML的canvas,感觉这个家伙挺神奇的,而且人们给我的感觉它很简单,但事实应该不是这样的.起码对于我来说不是简单的,学啥都的有持之以恒的心啊.希望自己可以坚持,带着好奇的心去感受js动画带给 ...

  3. html动画的 原理,HTML5 Canvas动画效果实现原理

    在线演示 使用html5画布能够帮助我们快速实现简单的动画效果,基本原理如下: 每隔一定时间绘制图形并且清除图形,用来模拟出一个动画过程,可以使用context.clearrect(0, 0, x, ...

  4. html5动态连线,canvas简单连线动画的实现代码

    前言:canvas动画入门系列之简单连线动画.虽然简单,但连线动画应用场景还挺多,因此做了个小demo,一通百通. step1:绘制点 首先创建个标签 设置几个点的坐标 const points = ...

  5. 小程序直播-疯狂点赞Canvas动画实现原理解析

    近期,电商直播业务热火朝天,直播间有一个很重要的互动:点赞. 为了烘托直播间的氛围,直播相对于普通视频或者文本内容,点赞通常有两个特殊需求: 点赞动作次数不限制,引导用户疯狂点赞 直播间的所有疯狂点赞 ...

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

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

  7. 简单的Canvas刮刮乐带动画效果的实例

    今天做了个刮刮乐领奖品的小活动,感觉挺有用的,整理在这儿记录下 上个效果图先: 加了个简单的 css 动画效果 下面贴上主要代码: index.html <!DOCTYPE html> & ...

  8. canvas动画简单操作

    canvas动画 小球滚动效果 关键api: window.requestAnimationFrame(draw) 会递归调用draw函数,替代setIntervalvar x = 20; var s ...

  9. Android动画原理

    一.前言 Android动画包含三种:补间动画(Tween Animation),帧动画(Frame Animation),属性动画 (Property Animation).其中属性动画是从Andr ...

最新文章

  1. 初识Linux C线程
  2. AI 一分钟 | 南京大学成立人工智能研究院;三星关联实体已收购 AI 搜索引擎创业公司Kngine的全部股份
  3. 综述 | 森林微生物组:多样性,复杂性和动态变化(IF:11.3)
  4. 实现 ASP.NET 网站地图提供者
  5. Vs 2015 调试ASP.NET Core修改监听端口
  6. Android官方网站
  7. sqlserver2008 获取最后插入的id_Python3操作SQL Server2008数据库
  8. 从GlassFish 3.x扩展到WebLogic 12c Server
  9. 链表的头结点和尾节点的用处
  10. ubuntu ssh密钥_生成SSH密钥以在Ubuntu中进行无密码登录
  11. 全能文件恢复软件推荐
  12. Solidworks常用技巧
  13. 编程语言新宠儿——Julia诞生记(转)
  14. 数字0123456789对应的ASCII码值
  15. FIX - 克隆虚拟机NAT模式网络不通、不稳定、vMnet8网络故障、网卡冲突、ssh连接慢
  16. MySQL中json_extract函数说明
  17. AtCoder Beginner Contest 269笔记
  18. 王者荣耀科技守护者密码答案是什么?最新科技守护者密码分享
  19. ab压力测试是使用以及介绍
  20. 前端encodeURI , decodeURI对字符串编码解码 , 以及把url中的%0A %20解码成换行和空格

热门文章

  1. 多核心和单核心CPU怎样工作的?
  2. 途牛原创|途牛Android App的插件实现
  3. libcurl库简介
  4. Redis集群搭建及java连接redis
  5. 公众号开发(3) —— vant移动端框架使用
  6. UnityA星寻路算法获取最短路径
  7. UTF-8带BOM格式与UTF-8无BOM格式转换
  8. 为什么java没前途,以及java虚拟机没前途?
  9. 直播礼物特效-漫播直播礼物分析
  10. 网站基本安全防护措施有哪些?具体如何实现呢?