• canvas 星星闪烁的效果


    代码实例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    		<style>
    		canvas{
    		background:#eee;
    		}
    		</style>
    		<title>星星</title>
    		<meta charset="utf-8">
    
    		<script>
    			window.onload=function  () {
    			 var canvas=document.getElementById("canvas");
    			 var cobj=canvas.getContext("2d");
    
    
    		     var starArr=[];
    			 for (var i=0; i<30; i++) {
                  var starObj={
    			   radius1:20+10*Math.random(),radius2:8+7*Math.random(),x:30+(canvas.width-60)*Math.random(),y:30+(canvas.height-60)*Math.random(),num:Math.ceil(4+4*Math.random()),color:"rgb("+parseInt(255*Math.random())+","+parseInt(255*Math.random())+","+parseInt(255*Math.random())+")",angle:360*Math.random(),changeAngle:-5+10*Math.random()
    			  }
    			  starArr.push(starObj);
    			 }
                  setInterval(function  () {
    			    cobj.clearRect(0,0,500,500);
    				for (var i=0; i<starArr.length; i++) {
    				starArr[i].angle+=starArr[i].changeAngle;
    				cobj.save();
                    cobj.beginPath();
    				cobj.translate(starArr[i].x,starArr[i].y);
    				cobj.rotate(starArr[i].angle*Math.PI/180);
    				cobj.scale(Math.sin(starArr[i].angle*Math.PI/180),Math.sin(starArr[i].angle*Math.PI/180))
    				cobj.globalAlpha=Math.abs(Math.sin(starArr[i].angle*Math.PI/180));
    				drawStar (0,0,starArr[i].radius1,starArr[i].radius2,starArr[i].num,"fill",starArr[i].color);
    				cobj.restore();
    				}
    			  },60)
    			 
    			 function drawStar (x,y,radius1,radius2,num,drawType,color) {
    				    var angle=360/(num*2);
    					var arr=[];
    					for (var i=0; i<num*2; i++) {
    					 var starObj={};
    					  if(i%2==0){
    					  starObj.x=x+radius1*Math.cos(i*angle*Math.PI/180);
    					  starObj.y=y+radius1*Math.sin(i*angle*Math.PI/180);
    					  }else{
    					   starObj.x=x+radius2*Math.cos(i*angle*Math.PI/180);
    					   starObj.y=y+radius2*Math.sin(i*angle*Math.PI/180);
    					  }
    					  arr.push(starObj);
    					}
    					cobj.beginPath();
    					cobj.fillStyle=color;
    					cobj.strokeStyle=color;
    					cobj.moveTo(arr[0].x,arr[0].y);
    					for (var i=1; i<arr.length; i++) {
    					cobj.lineTo(arr[i].x,arr[i].y);
    					}
    					cobj.closePath();
    					if(drawType=="fill"){
    					cobj.fill();
    					}else{
    					cobj.stroke();
    					}
                     }
    			}
    		</script>
    	</head>
    	<body>
    		<canvas id="canvas" width=500 height=500>
    		</canvas>
    	</body>
    </html>
    

      效果:

  • 相关阅读:
    delphi XE8 for android ----一个无意闯入的世界
    不能Ping和telnet的
    syslog-ng内容讲解
    《信息安全系统设计与实现》学习笔记7
    缓冲区溢出实验
    2.3.1测试
    鲲鹏服务器测试
    cat userlist
    需求分析
    《信息安全系统设计与实现》学习笔记5
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/7507767.html
Copyright © 2020-2023  润新知