简单的canvas动画原理
简单的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动画原理相关推荐
- 制作一个简单的canvas动画
制作一个简单的canvas动画 作者:旺仔 一上来先话不多说上代码,代码能看的懂得,ok,就当我下面所有的内容为废话,代码看的不太懂的,没关系我会一点一点让你懂,不过前提是你有一定的html+css+ ...
- 丘比特之箭——简单的canvas动画
刚学HTML的canvas,感觉这个家伙挺神奇的,而且人们给我的感觉它很简单,但事实应该不是这样的.起码对于我来说不是简单的,学啥都的有持之以恒的心啊.希望自己可以坚持,带着好奇的心去感受js动画带给 ...
- html动画的 原理,HTML5 Canvas动画效果实现原理
在线演示 使用html5画布能够帮助我们快速实现简单的动画效果,基本原理如下: 每隔一定时间绘制图形并且清除图形,用来模拟出一个动画过程,可以使用context.clearrect(0, 0, x, ...
- html5动态连线,canvas简单连线动画的实现代码
前言:canvas动画入门系列之简单连线动画.虽然简单,但连线动画应用场景还挺多,因此做了个小demo,一通百通. step1:绘制点 首先创建个标签 设置几个点的坐标 const points = ...
- 小程序直播-疯狂点赞Canvas动画实现原理解析
近期,电商直播业务热火朝天,直播间有一个很重要的互动:点赞. 为了烘托直播间的氛围,直播相对于普通视频或者文本内容,点赞通常有两个特殊需求: 点赞动作次数不限制,引导用户疯狂点赞 直播间的所有疯狂点赞 ...
- 最简单太阳系H5动画canvas详解 零基础可入
最简单太阳系H5动画canvas详解 零基础可入 最终结果:(实际为动画效果,金星绕轨道转动) 页面准备/html 要使用canvas,需要首先在页面中要绘制的位置放入canvas标签元素,在后期的绘 ...
- 简单的Canvas刮刮乐带动画效果的实例
今天做了个刮刮乐领奖品的小活动,感觉挺有用的,整理在这儿记录下 上个效果图先: 加了个简单的 css 动画效果 下面贴上主要代码: index.html <!DOCTYPE html> & ...
- canvas动画简单操作
canvas动画 小球滚动效果 关键api: window.requestAnimationFrame(draw) 会递归调用draw函数,替代setIntervalvar x = 20; var s ...
- Android动画原理
一.前言 Android动画包含三种:补间动画(Tween Animation),帧动画(Frame Animation),属性动画 (Property Animation).其中属性动画是从Andr ...
最新文章
- 初识Linux C线程
- AI 一分钟 | 南京大学成立人工智能研究院;三星关联实体已收购 AI 搜索引擎创业公司Kngine的全部股份
- 综述 | 森林微生物组:多样性,复杂性和动态变化(IF:11.3)
- 实现 ASP.NET 网站地图提供者
- Vs 2015 调试ASP.NET Core修改监听端口
- Android官方网站
- sqlserver2008 获取最后插入的id_Python3操作SQL Server2008数据库
- 从GlassFish 3.x扩展到WebLogic 12c Server
- 链表的头结点和尾节点的用处
- ubuntu ssh密钥_生成SSH密钥以在Ubuntu中进行无密码登录
- 全能文件恢复软件推荐
- Solidworks常用技巧
- 编程语言新宠儿——Julia诞生记(转)
- 数字0123456789对应的ASCII码值
- FIX - 克隆虚拟机NAT模式网络不通、不稳定、vMnet8网络故障、网卡冲突、ssh连接慢
- MySQL中json_extract函数说明
- AtCoder Beginner Contest 269笔记
- 王者荣耀科技守护者密码答案是什么?最新科技守护者密码分享
- ab压力测试是使用以及介绍
- 前端encodeURI , decodeURI对字符串编码解码 , 以及把url中的%0A %20解码成换行和空格