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

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

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. Fis3前端工程化之项目实战

    Fis3项目 项目目录结构: E:. │ .gitignore │ fis-conf.js │ index.html │ package.json │ README.md │ ├─material │ ...

  2. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  3. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  4. .net core快速上手

    2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上.当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与 ...

  5. “四核”驱动的“三维”导航 -- 淘宝新UI(需求分析篇)

    前言 孔子说:"软件是对客观世界的抽象". 首先声明,这里的"三维导航"和地图没一毛钱关系,"四核驱动"和硬件也没关系,而是为了复杂的应用而 ...

  6. HTML中上传与读取图片或文件(input file)----在路上(25)

    input file相关知识简例 在此介绍的input file相关知识为: 上传照片及文件,其中包括单次上传.批量上传.删除照片.增加照片.读取图片.对上传的图片或文件的判断,比如限制图片的张数.限 ...

  7. 在ubuntu16.10 PHP测试连接MySQL中出现Call to undefined function: mysql_connect()

    1.问题: 测试php7.0 链接mysql数据库的时候发生错误: Fatal error: Uncaught Error: Call to undefined function mysqli_con ...

  8. 初学者看过来之JSON入门

    1. 什么是JSON JSON---Javascript Object Notation,前两个单词大家应该都认识,最后一个notation,是"记号.标记法"的意思,连在一起,便 ...

  9. js参数arguments的理解

    原文地址:js参数arguments的理解 对于函数的参数而言,如下例子 function say(name, msg){ alert(name + 'say' + msg); } say('xiao ...

  10. 原生JS实现-星级评分系统

    今天我又写了个很酷的实例:星级评分系统(可自定义星星个数.显示信息) sufuStar.star();使用默认值5个星星,默认信息 var msg = [........]; sufuStar.sta ...