热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用HTML5的canvas制作万花筒动画特效

1<!DOCTYPEHTML>2<html>3<head>4<style>5#canvas{6bac
 1 DOCTYPE HTML>
2 <html>
3 <head>
4 <style>
5 #canvas{
6 background-color:#cccccc;
7
8 }
9 style>
10 <script>
11 window.onload=function(){
12 var canvas=document.getElementById("canvas");
13 var cobj=canvas.getContext("2d");
14 // var num=150;
15 var arr=[];
16 //var angle=0;
17 setInterval(function(){
18 cobj.clearRect(0,0,600,600);
19 for(var i=0;i<arr.length;i++)
20 {
21
22 cobj.save();
23 cobj.translate(300,300);
24 cobj.scale(arr[i].scale,arr[i].scale);
25 cobj.rotate(arr[i].angle*Math.PI/180);//旋转时的圆心为定义旋转前画布的原点位置,后面更改了原点的位置只影响到后面的绘制,下面的矩形就是原点在(50,50)地方的,而旋转的圆心在(100,100)处
26 cobj.beginPath();
27 cobj.fillStyle=arr[i].color;
28 cobj.rect(arr[i].num,arr[i].num,30,30);
29 cobj.fill();
30 cobj.restore();
31 }
32
33
34 },60)
35 setInterval(function(){
36 for(var i=0;i<arr.length;i++)
37 {
38 if( arr[i].num<=0)
39 {
40 arr.splice(i,1);//删掉当前元素;
41 continue;//同时退出本次循环
42
43 }
44 //变化过程中的储存的设置很重要,如果变化的储存没有设置好则有可能会达不到效果
45 arr[i].angle+=2;
46 arr[i].num-=0.2;
47 arr[i].scale-=0.002;
48 if(arr[i].scale<=0.2)
49 arr[i].scale=0.2;
50 }
51
52 },60)
53 setInterval(function(){
54 var rect={angle:0,num:150,scale:1,color:"rgb("+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+")"} ;
55 arr.push(rect);
56 },1000)
57
58 }
59 script>
60 head>
61 <body>
62 <canvas id="canvas" width=600px height=600px>
63 您的浏览器已经过期了!
64 canvas>
65
66 body>
67 html>

 


推荐阅读
author-avatar
手机用户2502870941
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有