作为一个新人怀着激动而紧张的心情写了第一篇帖子还请大家多多支持,小弟在次拜谢。

驯鹿拉圣诞老人动画效果图如下

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动画的更多相关文章

  1. 简单酷炫的Canvas数字时钟

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 我记得很早之前就看过这个DEMO,是岑安大大博客里看到的: 就是这个数字时钟,当时觉得这个创意不错,但是也没去折腾.直到昨天同事又在网上看 ...

  2. 8个经典炫酷的HTML5 Canvas动画欣赏

    HTML5非常强大,尤其是Canvas技术的应用,让HTML5几乎可以完成所有Flash能完成的效果.本文精选了8个经典炫酷的HTML5 Canvas动画欣赏,每一个都提供全部的源代码,希望对你有所帮 ...

  3. [转]收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation

    原文链接:http://www.open-open.com/lib/view/open1411443332703.html 描述:收集android上开源的酷炫的交互动画和视觉效果. 1.交互篇 2. ...

  4. [转]收集android上开源的酷炫的交互动画和视觉效果

    原文链接:http://www.open-open.com/lib/view/open1411443332703.html 描述:收集android上开源的酷炫的交互动画和视觉效果. 1.交互篇 2. ...

  5. Flutter酷炫的路由动画效果

    现在Flutter的路由效果已经非常不错了,能满足大部分App的需求,但是谁不希望自己的App更酷更炫那,下面介绍几个酷炫的路由动画. 其实路由动画的原理很简单,就是重写并继承PageRouterBu ...

  6. Android github上开源项目、酷炫的交互动画和视觉效果地址集合

    Android上开源的酷炫的交互动画和视觉效果:http://blog.csdn.net/u013278099/article/details/50323689 Awesome-android-ui: ...

  7. 使用 CSS 构建强大且酷炫的粒子动画

    粒子动画,顾名思义,就是页面上存在大量的粒子构建而成的动画.传统的粒子动画主要由 Canvas.WebGL 实现. 当然,不使用 HTML + CSS 的主要原因在于,粒子动画通常需要较多的粒子,而如 ...

  8. 【Flutter 实战】酷炫的开关动画效果

    此动画效果是我在浏览文章时发现的一个非常酷炫的效果,于是就使用 Flutter 实现了. 更多动画效果及Flutter资源:https://github.com/781238222/flutter-d ...

  9. 腾讯AlloyTeam正式发布pasition - 制作酷炫Path过渡动画

    pasition Pasition - Path Transition with little JS code, render to anywhere - 超小尺寸的Path过渡动画类库 Github ...

随机推荐

  1. .Net中的AOP系列之构建一个汽车租赁应用

    返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...

  2. setTimeout 的黑魔法

    setTimeout,前端工程师必定会打交道的一个函数.它看上去非常的简单,朴实.有着一个很不平凡的名字--定时器.让年少的我天真的以为自己可以操纵未来.却不知朴实之中隐含着惊天大密.我还记得我第一次 ...

  3. HashMap与TreeMap源码分析

    1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...

  4. OpenCASCADE Shape Location

    OpenCASCADE Shape Location eryar@163.com Abstract. The TopLoc package of OpenCASCADE gives resources ...

  5. MVC CodeFirst简单的创建数据库(非常详细的步骤)

       最近在学习MVC的开发,相信有过开发经验的人初学一个新的框架时候的想法跟我一样最关心的就是这个框架如何架构,每个架构如何分工,以及最最关键的就是如何与数据库通信,再下来才是学习基础的页面设计啊等 ...

  6. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

    原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...

  7. psoc学习

    第一是:项目的路径需要放在Documents and Settings\,也就是默认的文件夹的地方,不然会报错错误范例为:Question:CY8CKIT-023 kit example projec ...

  8. 用angular怎么缓存父页面数据

    angular做单页面应用是一个比较好的框架,但是它有一定的入门难度,对于新手来说可能会碰到很多坑,也有许多难题,大部分仔细看文档,找社区是能解决的. 但有些问题也许资料比较少,最近遇到过一个要缓存父 ...

  9. 发布APP到app store

    好久好久没写博客了,主要是 都在学习新东西,忙不赢啊. 近段时间在用AC平台学习开发移动APP, 今天开始发布应用. 在ac云控制台编译成ipa后,使用apple提供的Application Load ...

  10. Mysql - 触发器/视图

    触发器在之前的项目中, 应用的着实不多, 没有办法的时候, 才会去用这个. 因为这个东西在后期并不怎么好维护, 也容易造成紊乱. 我最近的项目中, 由于数据库设计(别人设计的)原因, 导致一些最简单功 ...