HTML5 canvas画布元素 制作 动态花朵动画

废话不多说 先上代码

<!doctype>
<html>
<head>
<meta charset="utf-8">
</head>
<body style="text-align:center;">
<canvas id="canvas" width="1300px" height="580px" style="border:2px black solid;">
</canvas>
<script>

var imge = new Image(100 ,100);
imge.src = "hh.png";
var a = new Array();
 a[0] = "2.png";
var cans = document.getElementById("canvas");
var cc = cans.getContext("2d");
cc.save();
var num=0;
function zuobiaox() {
	var x = Math.floor(Math.random()*1200);
	return x;
}
function zuobiaoy() {
	var y = Math.floor(Math.random()*480);
	return y;
}

imge.onload = function() {

	chanhua();

}
function chanhua() {
	cc.fillstyle="white";
	cc.fillRect(0,0,1300,580);
	//cc.save();
	//一定要清理画布,这样才能清理残留在画布上的像素,还你一个亮白如新的画布~请用纳爱斯
	cc.clearRect(0,0,1300,580);
	var x = zuobiaox();
		var y = zuobiaoy();
		//bian(imge);
		var ww= 70+Math.floor(Math.random()*100);

		cc.drawImage(imge, x, y,180,180);
		//setInterval("draw(imgdata, x, y,1.3)",1000);
		//ceshi(x,y,13);
		num =0;
		draw(x,y);
		//cc.restore();
		setTimeout("chanhua()",2000);

}

function  draw(x,y) {

	var img = cc.getImageData(x,y,180,180);
	for(var i = 0,len = img.data.length; i <len; i+=4)	{

		img.data[i+3] = img.data[i+3] * 0.8;
	}

	cc.putImageData(img,x,y);
	num++;
	if(num>20)
	{
	//	alert("ok");

		clearTimeout(st);
		//如果没有return,就会导致之前出现过花的位置都继续保持
		return;

	}
	var st = setTimeout("draw("+x+","+y+")",80);	

}

//setInterval(img.onload,2000);
</script>
<a href="#"><img src = "hh.png" width="100px"></a>
</body>
</html>

函数解释:

chanhua():利用位图在画布随机位置上绘制花朵。每隔2s调用一次该函数,每次调用都会清理画布

draw():对位图进行特效处理,进行像素处理,利用getImageData(),获取画布上某一区域像素,对该区域像素进行透明度处理。在通过putImageData()将处理好的像素放在原位置。每0.08s调用一次该函数,调用20次,每次调用花的透明度增强,到最后一次时,花几近透明(几近透明的说法是准确的,因为此时花的透明度已达到0.0000...0x了,所以不是完全透明,但是已经看不出来了)。

注意事项:

1.由于出现过花的地方还是有残留像素存在,当相同地方再次出现花朵时,会对新花产生影响,所以在每次生成花朵时要清理一次画布,利用clearRect()函数,宽和高与画布保持一致。

2.一定要在图片加载完成后再去利用图片,img.onload=function() {...}中去使用上述函数。

3.setTimeout("draw("+x+","+y+")",80);一定要给draw()函数加引号,否则马上执行该函数,不再等待0.08s。不要把变量x,y也括在双引号当中,这样会被当成是普通字符串处理。

4.切记每朵花的draw()函数要退出,否则会一直在画布上每2s变淡一次,不会消失。如下图所示:

时间: 2024-10-09 21:51:25

HTML5 canvas画布元素 制作 动态花朵动画的相关文章

在HTML5的画布元素上进行绘画操作

#!usr/bin/env python #-*- coding:utf-8 -*- #在HTML5的画布元素上进行绘画操作 import unittest,time from selenium import webdriver class TestDemo(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() def test_HTML5Canvas(self): url = 'http://www.w3sc

html5 canvas画布上合成

source-over 默认.在目标图像上显示源图像. source-atop 在目标图像顶部显示源图像.源图像位于目标图像之外的部分是不可见的. source-in 在目标图像中显示源图像.只有目标图像内的源图像部分会显示,目标图像是透明的. source-out 在目标图像之外显示源图像.只会显示目标图像之外源图像部分,目标图像是透明的. destination-over 在源图像上方显示目标图像. destination-atop 在源图像顶部显示目标图像.源图像之外的目标图像部分不会被显

HTML5 Canvas 画布

一.Canvas是什么? canvas,是一个画布,canvas元素用于在网页上绘制图形. canvas 拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. 二.创建Canvas元素 加上基本的属性:类,宽度和高度 <canvas class="MyCanvas" width:100px height:100px></canvas> 三.绘制路径 使用的是javascript元素来绘制,canvas本省不具备绘图的能力.所有的绘制必须通过javascript

HTML5 Canvas 梦幻的文字飞扬动画教程

之前为大家介绍了一款HTML5/CSS3 3D文字特效 文字外翻效果.今天为大家带来的是html5 canvas实现的文字漂动动画效果.画面非常梦幻. 在线预览   源码下载 实现代码如下: html代码: <div class="dg ac"> <div class="dg main a taller-than-window" style="width: 245px;"> <div style="widt

前端特效demo | 值得收藏的6个 HTML5 Canvas 实用案例

HTML5 动画在Canvas 上得到了充分的发挥,我们 VIP 视频也分享过很多相关的动画特效制作视频,这次给大家带来 6 款超炫酷的HTML5 canvas 动画的 demo,一起来看看吧~ 文内附有时钟效果代码 demo 下载地址,感兴趣的小伙伴们可以收藏一下. 1 超绚丽的 HTML5 地图分布动画 这是一款基于 HTML5 的地图应用,但它不同的地方在于它主要是在地图上实现分布动画,可以利用这款插件实现各个地区之间的客流流向,给人非常直观的数据展现. 2 鼠标滑过粒子挤压动画 粒子动画

Particles.js基于Canvas画布创建粒子原子颗粒效果

文章目录 使用方法 自定义参数 相关链接 Particles.js是一款基于HTML5 Canvas画布的轻量级粒子动画插件,可以设置粒子的形状.旋转.分布.颜色等属性,还可以动态添加粒子,效果非常炫酷,能和鼠标互动吸附或者是躲避鼠标指针. 使用方法 1.该粒子动画库插件使用方法非常简单,首先要在页面中引入particles.js文件. <script src="js/particles.js"></script> 2.在页面中使用一个div来作为放置粒子的容器

TagCanvas - HTML5 Canvas Tag Cloud

http://www.goat1000.com/tagcanvas.php TagCanvas是一个基于HTML5 Canvas技术开发的标签云动画.还提供一个以jQuery插件形式实现的版本. 它支持文本和图片两种格式,能够以Sphere, hcylinder 或 vcylinder三种形状显示. TagCanvas还支持IE浏览器(利用ExplorerCanvas实现). 具体参数: Option Default Description interval 20 Interval betwee

如何在html5的canvas画布中绘制gif动态图片

我们都知道如何在html5的canvas画布上绘制静态图片(jpeg, png等),直接用canvas中的drawImage方法即可,那么如何绘制动态图片(gif)? 相信大家都知道动态图片之所以动态,是因为它是由很多图片按一定的帧数顺序播放而成的,因此我们是否也可以模拟这样的帧数,每隔一定的时间重新 绘制图片,就能画出动态图片呢?答案当然是YES.下面就是我自己测试的一个例子,代码如下: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 &l

HTML5中的&lt;canvas&gt;画布:使用canvas元素在网页上绘制四分之一圆(3)

前几天自己做了个四分之一的圆,放到手机里面测试.效果不是很好.于是今天通过查资料,找到了canvas.自己研究了一天,发现可以使用canvas画圆.代码如下: 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 7 </head> 8 <body&g