<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>绘制小人动画</title>
<style>
canvas{
border: 1px solid green;
}
</style>
</head>
<body>
<!-- 绘制小人动画 -->
<canvas width="400" height="600" id="canvas"></canvas>
</body>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
function toAngle(radian){
return radian*180/Math.PI;
}
function toRadian(angle){
return angle*Math.PI/180;
}
function img(ctx,element,x0,y0){
var x = x0,
y = y0;
element.onload = function(){
var width = element.width/4,
height = element.height/4;
var i = 0,
j = 0,
a = 0;
setInterval(function(){
//x = x + a;
ctx.clearRect(x,y,width,height);
ctx.drawImage(element,width*i,height*j,width,height,x,y,width,height);
i ++;
if(i == 4){
setTimeout(function(){
i = 0;
if(j == 0){
j =1;
//a-=10;
}else if(j == 1){
j = 3;
}else if(j == 2){
j = 0;
}else if(j == 3){
j = 2;
//a+=10;
}
},20)
}
},200)
}
};
var img1 = new Image();
img1.src = 'imgs/game1.png';
var img2 = new Image();
img2.src = 'imgs/game2.png';
var img3 = new Image();
img3.src = 'imgs/game3.png';
var img4 = new Image();
img4.src = 'imgs/game4.png';
var img5 = new Image();
img5.src = 'imgs/game5.png';
var img6 = new Image();
img6.src = 'imgs/game6.png';
var img7 = new Image();
img7.src = 'imgs/game7.png';
var img8 = new Image();
img8.src = 'imgs/game8.png';
var img9 = new Image();
img9.src = 'imgs/game9.png';
var img10 = new Image();
img10.src = 'imgs/game10.png';
var img11 = new Image();
img11.src = 'imgs/game11.png';
var img12 = new Image();
img12.src = 'imgs/game12.png';
img(ctx,img1,0,0);
img(ctx,img2,50,0);
img(ctx,img3,100,0);
img(ctx,img4,150,0);
img(ctx,img5,200,0);
img(ctx,img6,250,0);
img(ctx,img7,300,0);
img(ctx,img8,350,0);
img(ctx,img9,0,100);
img(ctx,img10,50,100);
img(ctx,img11,100,100);
img(ctx,img12,150,100);
</script>
</html>

//这边是自己封装了一个函数,其实从性能优化的角度来考虑,我们可以先在内存中创建一个canvas标签,将这个图画放在内存中的canvas里面,再将内存中创建好的canvas放到页面上的这个canvas标签上,这只是一个思路,希望大家可以往这方面考虑

利用canvas来绘制一个会动的图画,欢迎指教的更多相关文章

  1. 利用canvas来绘制一个会动的图画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 利用Canvas进行绘制XY坐标系

    首先来一发图 绘制XY的坐标主要是利用Canvas setLeft和setBottom功能(Canvas内置坐标的功能) 1.首先WPF中的坐标系都是从左到右,从上到下的 即左上角位置(0,0)点,所 ...

  3. 公告栏添加时钟——利用canvas画出一个时钟

    前言 最近在学习HTML5标签,学到Canvas,觉得很有趣.便在慕课网找了个demo练手.就是Canvas时钟. 对于canvas,w3shcool上是这么描述的: HTML5 <canvas ...

  4. canvas基础绘制-一个小球的坠落、反弹

    效果如图: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  5. Javascript高级编程学习笔记(87)—— Canvas(4)绘制路径

    绘制路径 2D上下文支持许多在画布上绘制路径的方法 通过路径可以创造出复杂的形状和线条,要绘制路径首先必须调用beginPath()方法,表示开始绘制路径 然后再通过下列的方法绘制路径: arc(x, ...

  6. Canvas绘制一个大鱼喂小鱼的游戏

    Canvas是HTML5中的一部分,强大的API足以让我们绘制我们任意想绘制的东西.利用Canvas的基础学习以及JavaScript面向对象的思想绘制一个小游戏,下面是源码地址https://git ...

  7. 10分钟,利用canvas画一个小的loading界面

    首先利用定义下canvas得样式 <canvas width="1024" height="720" id="canvas" styl ...

  8. 用canvas绘制一个简易时钟

    在见识了html5中canvas的强大,笔者准备制作一个简易时钟. 下面就是成果啦,制作之前我们先分析一下,绘制一个时钟需要做哪些准备. 一 . 1.首先这个时钟分为表盘,指针(时针,分针,秒针)和数 ...

  9. Canvas 绘制一个像素风电子时钟

    想法是在 Canvas 上绘制由小方块组成的数字. 第一步是实现绘制小方块的方法,先画出一个边长为 5 的 10x10 个方块,使用两个 for 循环很简单就能完成. for (let i = 0; ...

随机推荐

  1. 用matplotlib绘制图像

    实例一: import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,6,100) y=np.cos(2*np.pi*x)*n ...

  2. python3 zip压缩

    参考: https://docs.python.org/3/library/zipfile.html https://zhidao.baidu.com/question/149840976436638 ...

  3. Unity5 2D Animation

    1. 所有的动画保存在 .anim 后缀的文件里.2. Animation 标签用来编辑一堆 Animation clip,每一个clip是一个图片序列,也就是动图.动画的最小控制单位就是clip,一 ...

  4. DataAdapter对象

    DataAdapter对象在物理数据库表和内存数据表(结果集)之间起着桥梁的作用.它通常与DataTable对象或DataSet对象配合来实现对数据库的操作. DataAdapter对象是一个双向通道 ...

  5. React 同构开发(一)

    为什么要做同构 要回答这个问题,首先要问什么是同构.所谓同构,顾名思义就是同一套代码,既可以运行在客户端(浏览器),又可以运行在服务器端(node). 我们知道,在前端的开发过程中,我们一般都会有一个 ...

  6. IO流(一)字节流

    1:io流体系:对数据进行读写操作.所以IO不是读就是写咯. 2:io流的相关的类:java.io包. 有关IO的操作都会产生IOException异常 3:io:参照物是程序, i:input.进来 ...

  7. Git学习系列之Git 的缺点有哪些?

    不多说,直接上干货 前面,谈及了 Git学习系列之Git 的优势有哪些? 缺点: (1)资料少(起码中文资料很少). (2)学习周期相对而言比较长. (3)不符合常规思维. (4)代码保密性差,一旦开 ...

  8. frames的对象兼容性获取以及跨域实现数据交换(js文件的加载判断)

    1.document.frames()与document.frames[]的区别 <html> <body> <iframe id="ifr_1" n ...

  9. poj 1168 The Triangle

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 39169   Accepted: 23518 De ...

  10. Spark中自定义累加器Accumulator

    1. 自定义累加器 自定义累加器需要继承AccumulatorParam,实现addInPlace和zero方法. 例1:实现Long类型的累加器 object LongAccumulatorPara ...