zoukankan      html  css  js  c++  java
  • 利用HTML5的canvas制作万花筒动画特效

     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>
  • 相关阅读:
    问题S
    为什么说程序员的前三年不要太看重工资水平
    Oracle查看锁表与解锁方法
    .net 动态代理的泛型方法支持问题
    探索Windows Azure 监控和自动伸缩系列3
    探索Windows Azure 监控和自动伸缩系列2
    探索Windows Azure 监控和自动伸缩系列1
    如何找到w3wp与w3svc的对应关系
    妙用perfmon Alert抓dump
    .net RPC框架选型(一)
  • 原文地址:https://www.cnblogs.com/heshan1992/p/5434313.html
Copyright © 2011-2022 走看看