本文主要包含HTML5,切换图片,动画形式等相关知识,匿名希望在学习及工作中可以帮助到您
本文主要用到的知识
本文主要用到了http:///code/7892.html" target="_blank">Canvas API中的drawImage方法,下面对此方法略做介绍。
在Canvas API中绘制图像用drawImage方法,这是一个重载方法,定义如下:
context.drawImage(image,x,y); context.drawImage(image,x,y,w,h); context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);
第一个方法有三个参数,第一个参数为要绘制的图像(还可以是video元素),x和y为该图像在画布中的起始坐标。
第二个方法有五个参数,前三个跟第一个方法意义一样,w和h指绘制时的图像宽度和高度,可以用来进行图像缩放。
第三个方法有九个参数,第一个参数跟前二个方法意义相同,后八个参数中前四个在源图像上一取一个矩形,后四个参数用于在画布上定义一个矩形,整个方法的作用就是把源图像上部分区域(第二到五个参数定义的部分)复制到画布上(后四个参数定义的部分)。
本文主要利用了第三个方法完成绘制。
源代码
<!DOCTYPE html><html><head>
<meta charset="UTF-8">
<title>用动画的形式切换图片</title>
<script type="text/javascript">
var width, height;
var context, image, functionId;
var drawLeft, drawWidth;
var drawTop, drawHeight;
var spaceWidth, spaceHeight;
var speed=5000;
var images = ["http://i.6.cn/cvbnm/4e/7e/bb/75f251a8e2ae935d598f17b4f8275060.jpg",
"http://i.6.cn/cvbnm/4a/6e/fb/805175016e502c483b75276f29801df3.jpg",
"http://i.6.cn/cvbnm/6a/72/18/1787a3b2754ef48e374bbd14635f5c36.jpg",
"http://i.6.cn/cvbnm/94/55/6c/b1ba743ba617be2891fa06b67d795511.jpg",
"http://i.6.cn/cvbnm/02/1b/04/8018ee9e5756ac6b30f27d7ad6396b03.jpg",
"http://i.6.cn/cvbnm/85/ea/d1/65f15857b971afb3b6e38b5fcdadc9c0.jpg"];
function selectFrom(iFirstValue, iLastValue) {
var iChoices = iLastValue - iFirstValue + 1;
return Math.floor(Math.random() * iChoices + iFirstValue);
} function showPicture(effects) {
var count = 0;
for (var o in effects) {
count++;
}
var canvas = document.getElementById('canvas');
context = canvas.getContext('2d');
width = canvas.width;
height = canvas.height;
var currImage = 0;
image = new Image();
image.src = images[currImage];
context.drawImage(image, 0, 0, width, height);
currImage++;
if (count > 0) {
setInterval(function () {
var rand = selectFrom(0, count - 1);
image.src = images[currImage];
currImage++;
if (currImage == images.length) {
currImage = 0;
}
var index = 0;
for (var effect in effects) {
if (index++ == rand) {
effects[effect]();
break;
}
}
}, speed);
}
}
window.onload=function(){
showPicture({
leftToRight: function () {
context.fillStyle = "#EEEEFF";
context.fillRect(0, 0, width, height);
drawWidth = 0;
functionId = self.setInterval("drawleftToRight()", 10);
},
topToBottom: function () {
context.fillStyle = "#EEEEFF";
context.fillRect(0, 0, width, height);
drawHeight = 0;
functionId = self.setInterval("drawtopToBottom()", 10);
},
hcenter: function () {
context.fillStyle = "#EEEEFF";
context.fillRect(0, 0, width, height);
drawLeft = width / 2;
drawWidth = 0;
functionId = self.setInterval("drawhcenter()", 10);
},
vcenter: function () {
context.fillStyle = "#EEEEFF";
context.fillRect(0, 0, width, height);
drawTop = height / 2;
drawHeight = 0;
functionId = self.setInterval("drawvcenter()", 10);
},
hwindow: function () {
context.fillStyle = "#EEEEFF";
context.fillRect(0, 0, width, height);
spaceWidth = width / 10;
drawWidth = 0;
functionId = self.setInterval("drawhwindow()", 50);
},
vwindow: function () {
context.fillStyle = "#EEEEFF";
context.fillRect(0, 0, width, height);
spaceHeight = height / 10;
drawHeight = 0;
functionId = self.setInterval("drawvwindow()", 50);
},
hvwindow: function () {
context.fillStyle = "#EEEEFF";
context.fillRect(0, 0, width, height);
spaceHeight = height / 10;
spaceWidth = width / 10;
drawWidth = 0;
drawHeight = 0;
functionId = self.setInterval("drawhvwindow()", 50);
}
});
} function drawleftToRight() {
context.drawImage(image, 0, 0, drawWidth, image.height, 0, 0, drawWidth, image.height);
drawWidth = drawWidth + 2;
if (drawWidth > width) {
window.clearInterval(functionId);
}
} function drawtopToBottom() {
context.save();
context.drawImage(image, 0, 0, image.width, drawHeight, 0, 0, image.width, drawHeight);
drawHeight = drawHeight + 2;
if (drawHeight > height) {
window.clearInterval(functionId);
}
context.restore();
}
function drawhcenter() {
context.save();
context.drawImage(image, drawLeft, 0, drawWidth, image.height, drawLeft, 0, drawWidth, image.height);
drawLeft = drawLeft - 1;
drawWidth = drawWidth + 2;
if (drawLeft <= 0) {
window.clearInterval(functionId);
}
context.restore();
}
function drawvcenter() {
context.save();
context.drawImage(image, 0, drawTop, image.width, drawHeight, 0, drawTop, image.width, drawHeight);
drawTop = drawTop - 1;
drawHeight = drawHeight + 2;
if (drawTop <= 0) {
window.clearInterval(functionId);
}
context.restore();
} function drawhwindow() {
for (i = 0; i < 10; i++) {
context.drawImage(image, 0 + i * spaceWidth, 0, drawWidth,
image.height, 0 + i * spaceWidth, 0, drawWidth, image.height);
}
drawWidth += 1;
if (drawWidth - 1 > spaceWidth) {
window.clearInterval(functionId

