最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

HTML5Canvas动画效果图文代码演示

来源:动视网 责编:小采 时间:2020-11-27 15:12:19
文档

HTML5Canvas动画效果图文代码演示

HTML5Canvas动画效果图文代码演示:HTML5 Canvas动画效果演示主要思想:首先要准备一张有连续帧的图片,然后利用HTML5 Canvas的draw方法在不同的时间间隔绘制不同的帧,这样看起来就像动画在播放。关键技术点:JavaScript 函数setTimeout()有两个参数,第一个是参数可以传递一个JavaScr
推荐度:
导读HTML5Canvas动画效果图文代码演示:HTML5 Canvas动画效果演示主要思想:首先要准备一张有连续帧的图片,然后利用HTML5 Canvas的draw方法在不同的时间间隔绘制不同的帧,这样看起来就像动画在播放。关键技术点:JavaScript 函数setTimeout()有两个参数,第一个是参数可以传递一个JavaScr
 HTML5 Canvas动画效果演示

主要思想:

首先要准备一张有连续帧的图片,然后利用HTML5 Canvas的draw方法在不同的时间

间隔绘制不同的帧,这样看起来就像动画在播放。

关键技术点:

JavaScript 函数setTimeout()有两个参数,第一个是参数可以传递一个JavaScript方法,

另外一个参数代表间隔时间,单位为毫秒数。代码示例:

setTimeout( update, 1000/30);

Canvas的API-drawImage()方法,需要指定全部9个参数:

ctx.drawImage(myImage, offw, offh, width,height, x2, y2, width, height);

其中offw, offh是指源图像的起始坐标点,width, height表示源图像的宽与高,x2,y2表

示源图像在目标Canvas上的起始坐标点。

一个22帧的大雁飞行图片实现的效果:

源图像:


程序代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="chrome=IE8">
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Canvas Mouse Event Demo</title>
<link href="default.css" rel="stylesheet" />
	<script>
	var ctx = null; // global variable 2d context
	var started = false;
	var mText_canvas = null;
	var x = 0, y =0;
	var frame = 0; // 22 5*5 + 2
	var imageReady = false;
	var myImage = null;
	var px = 300;
	var py = 300;
	var x2 = 300;
	var y2 = 0;
	window.onload = function() {
	var canvas = document.getElementById("animation_canvas");
	console.log(canvas.parentNode.clientWidth);
	canvas.width = canvas.parentNode.clientWidth;
	canvas.height = canvas.parentNode.clientHeight;
	
	if (!canvas.getContext) {
	 console.log("Canvas not supported. Please install a HTML5 compatible browser.");
	 return;
	}
	
	// get 2D context of canvas and draw rectangel
	ctx = canvas.getContext("2d");
	ctx.fillStyle="black";
	ctx.fillRect(0, 0, canvas.width, canvas.height);
	myImage = document.createElement('img');
	myImage.src = "../robin.png";
	myImage.onload = loaded();
	} 
	
	function loaded() {
	 imageReady = true;
	 setTimeout( update, 1000/30);
	}
	
	function redraw() {
	ctx.clearRect(0, 0, 460, 460)
	ctx.fillStyle="black";
	ctx.fillRect(0, 0, 460, 460);
	
	// find the index of frames in image
	var height = myImage.naturalHeight/5;
	var width = myImage.naturalWidth/5;
	var row = Math.floor(frame / 5);
	var col = frame - row * 5;
	var offw = col * width;
	var offh = row * height;
	
	// first robin
	px = px - 5;
	py = py - 5;
	if(px < -50) {
	px = 300;
	}
	if(py < -50) {
	py = 300;
	}
	
	//var rate = (frame+1) /22;
	//var rw = Math.floor(rate * width);
	//var rh = Math.floor(rate * height);
	ctx.drawImage(myImage, offw, offh, width, height, px, py, width, height);
	
	// second robin	
	x2 = x2 - 5;
	y2 = y2 + 5;
	if(x2 < -50) {
	x2 = 300;
	y2 = 0;
	}
	ctx.drawImage(myImage, offw, offh, width, height, x2, y2, width, height);
	
	}
	
	function update() {
	 redraw();
	 frame++;
	 if (frame >= 22) frame = 0;
	 setTimeout( update, 1000/30);
	}
	
	</script>
</head>
<body>
	<h1>HTML Canvas Animations Demo - By Gloomy Fish</h1>
	<pre>Play Animations</pre>
	<p id="my_painter">
	<canvas id="animation_canvas"></canvas>
	</p>
</body>
</html>

发现上传透明PNG格式有点问题,所以我上传

不透明的图片。可以用其它图片替换,替换以后

请修改最大帧数从22到你的实际帧数即可运行。

文档

HTML5Canvas动画效果图文代码演示

HTML5Canvas动画效果图文代码演示:HTML5 Canvas动画效果演示主要思想:首先要准备一张有连续帧的图片,然后利用HTML5 Canvas的draw方法在不同的时间间隔绘制不同的帧,这样看起来就像动画在播放。关键技术点:JavaScript 函数setTimeout()有两个参数,第一个是参数可以传递一个JavaScr
推荐度:
标签: 动画 演示 效果
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top