简单酷炫的canvas动画
作为一个新人怀着激动而紧张的心情写了第一篇帖子还请大家多多支持,小弟在次拜谢。
驯鹿拉圣诞老人动画效果图如下


html如下:
<div style="width:400px;height:300px;background:url(yuandan.jpg) no-repeatcenter;background-size:300px 200px;">
<canvas id="canvas" style="border:1px solid #000;display:block;margin:40px auto 0"></canvas>
</div>
javascript如下:
//定义id为canvas的元素为变量myCanvas
var myCanvas=document.getElementById("canvas");
//设myCanvas的宽是400px,高300px;
myCanvas.width="400";
myCanvas.height="300";
//定义一个在画布上绘图的环境
var ctx=myCanvas.getContext("2d");
//此为截取图片的x坐标
var shengdanP=[{x:0},{x:220},{x:440},{x:660}];
//创建一个Image对象
var shengdanImg=new Image();
//设置shengdanImg的路径
shengdanImg.src="lr.jpg";
//定义加载完图在运行程序
shengdanImg.onload=function(){
setInterval(pao,40);
}
//设置shengdanP的初始下标为0
var index=0;
//设置动画运动的初始长度为0
var lc=0;
//设置画布的坐标
ctx.translate(290,260);
//以下是运行动画的代码
function pao(){
//每次运行lc就加10
lc+=10;
//如果lc小于260,擦除shengdanImg,画布的坐标变为(-10,0)
if(lc<260){
ctx.clearRect(0,0,100,40);
ctx.translate(-10,0);
}
//如果lc等于260,擦除shengdanImg,旋转90度,画布的坐标变为(-70,0),再擦除shengdanImg
else if(lc==260){
ctx.clearRect(0,0,100,40);
ctx.rotate(Math.PI/2);
ctx.translate(-70,0);
ctx.clearRect(-70,0,10,40);
}
//如果lc小于420,擦除hengdanImg,画布的坐标变为(-10,0)
else if(lc<420){
ctx.clearRect(0,0,100,40);
ctx.translate(-10,0);
}
//如果lc等于420,擦除shengdanImg,旋转90度,画布的坐标变为(-70,0),再擦除shengdanImg
else if(lc==420){
ctx.clearRect(0,0,100,40);
ctx.rotate(Math.PI/2);
ctx.translate(-70,0);
ctx.clearRect(-70,0,100,40);
}
//如果lc小于680,擦除hengdanImg,画布的坐标变为(-10,0)
else if(lc<680){
ctx.clearRect(0,0,100,40);
ctx.translate(-10,0);
}
//如果lc等于680,擦除shengdanImg,旋转90度,画布的坐标变为(-70,0),再擦除shengdanImg
else if(lc==680){
ctx.clearRect(0,0,100,40);
ctx.rotate(Math.PI/2);
ctx.translate(-70,0);
ctx.clearRect(-70,0,100,40);
}
//如果lc小于840,擦除hengdanImg,画布的坐标变为(-10,0)
else if(lc<840){
ctx.clearRect(0,0,100,40);
ctx.translate(-10,0);
}
//如果lc等于840,擦除shengdanImg,旋转90度,画布的坐标变为(-70,0),再擦除shengdanImg,lc变为0
else if(lc==840){
ctx.clearRect(0,0,100,40);
ctx.rotate(Math.PI/2);
ctx.translate(-70,0);
ctx.clearRect(-70,0,100,40);
lc=0;
}
//如果index等于shengdanP的长度,index变为0
if(index==shengdanP.length){
index=0;
}
//声明sx为下标为index的shengdanP下x的值
var sx=shengdanP[index].x;
//在画布上绘出shengdanImg,
ctx.drawImage(shengdanImg,sx,0,220,80,0,0,100,40);
//最后每运行一次这个函数infex就加1
index++;
}
简单酷炫的canvas动画的更多相关文章
- 简单酷炫的Canvas数字时钟
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 我记得很早之前就看过这个DEMO,是岑安大大博客里看到的: 就是这个数字时钟,当时觉得这个创意不错,但是也没去折腾.直到昨天同事又在网上看 ...
- 8个经典炫酷的HTML5 Canvas动画欣赏
HTML5非常强大,尤其是Canvas技术的应用,让HTML5几乎可以完成所有Flash能完成的效果.本文精选了8个经典炫酷的HTML5 Canvas动画欣赏,每一个都提供全部的源代码,希望对你有所帮 ...
- [转]收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation
原文链接:http://www.open-open.com/lib/view/open1411443332703.html 描述:收集android上开源的酷炫的交互动画和视觉效果. 1.交互篇 2. ...
- [转]收集android上开源的酷炫的交互动画和视觉效果
原文链接:http://www.open-open.com/lib/view/open1411443332703.html 描述:收集android上开源的酷炫的交互动画和视觉效果. 1.交互篇 2. ...
- Flutter酷炫的路由动画效果
现在Flutter的路由效果已经非常不错了,能满足大部分App的需求,但是谁不希望自己的App更酷更炫那,下面介绍几个酷炫的路由动画. 其实路由动画的原理很简单,就是重写并继承PageRouterBu ...
- Android github上开源项目、酷炫的交互动画和视觉效果地址集合
Android上开源的酷炫的交互动画和视觉效果:http://blog.csdn.net/u013278099/article/details/50323689 Awesome-android-ui: ...
- 使用 CSS 构建强大且酷炫的粒子动画
粒子动画,顾名思义,就是页面上存在大量的粒子构建而成的动画.传统的粒子动画主要由 Canvas.WebGL 实现. 当然,不使用 HTML + CSS 的主要原因在于,粒子动画通常需要较多的粒子,而如 ...
- 【Flutter 实战】酷炫的开关动画效果
此动画效果是我在浏览文章时发现的一个非常酷炫的效果,于是就使用 Flutter 实现了. 更多动画效果及Flutter资源:https://github.com/781238222/flutter-d ...
- 腾讯AlloyTeam正式发布pasition - 制作酷炫Path过渡动画
pasition Pasition - Path Transition with little JS code, render to anywhere - 超小尺寸的Path过渡动画类库 Github ...
随机推荐
- Angular2入门系列教程3-多个组件,主从关系
上一篇 Angular2项目初体验-编写自己的第一个组件 好了,前面简单介绍了Angular2的基本开发,并且写了一个非常简单的组件,这篇文章我们将要学会编写多个组件并且有主从关系 现在,假设我们要做 ...
- java中文乱码解决之道(一)-----认识字符集
沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...
- [Java 缓存] Java Cache之 DCache的简单应用.
前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...
- HTML5 progress和meter控件
在HTML5中,新增了progress和meter控件.progress控件为进度条控件,可表示任务的进度,如Windows系统中软件的安装.文件的复制等场景的进度.meter控件为计量条控件,表示某 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-WebApi与Unity注入
系列目录 前言: 有时候我们系统需要开放数据给手机App端或其他移动设备,不得不说Asp.net WebApi是目前首选 本节记录Asp.net MVC WebApi怎么利用Unity注入.系列开头已 ...
- Node.js:进程、子进程与cluster多核处理模块
1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...
- CRL快速开发框架系列教程六(分布式缓存解决方案)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- PHP好用但又容易忽略的小知识
1.PHP函数之判断函数是否存在 当我们创建了自定义函数,并且了解了可变函数的用法,为了确保程序调用的函数是存在的,经常会先使用function_exists判断一下函数是否存在.同样的method_ ...
- duang~免费的学习视频来啦:学霸君之全栈测试
学霸君向童鞋们推荐一款 同名学霸学习 视频教程 重点是完全免费收看学习噢!!! 今天 学霸君推荐腾讯课堂的学霸君之全栈测试 复制下方链接至腾讯课堂中报名学习 https://ke.qq.com/cou ...
- Android—基于GifView显示gif动态图片
android中显示gif动态图片用到了开源框架GifView 1.拷GifView.jar到自己的项目中. 2.将自己的gif图片拷贝到drawable文件夹 3.在xml文件中设置基本属性: &l ...