日期:2014-05-18  浏览次数:20207 次

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>HTML5学习第5天[乱撞的球]</title>
 <style>
 body{
  font-family: 微软雅黑; 
 }
 body,h1{
  margin:0;
 }
 canvas{
  display:block;margin-left: auto;margin-right: auto;
  border:1px solid #DDD; 
  background: -webkit-linear-gradient(top, #222,#111);
 } 
 </style>
</head>
<body>
 <h1>JS实现的随机乱撞的彩色圆球特效代码</h1>
<canvas id="canvas" >
 
</canvas>
<button id="stop">stop</button>
<button id="run">run</button>
<button id="addBall">addBall</button>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
var nimo={
 aniamted:null,
 content:null,
 data:{
  radiusRange:[5,20],
  speedRange:[-5,5],
  scrollHeight:null,
  scrollWdith:null
 },
 balls:[],
 ele:{
  canvas:null  
 },
 fn:{
  creatRandom:function(startInt,endInt){//生产随机数
   var iResult; 
   iResult=startInt+(Math.floor(Math.random()*(endInt-startInt+1)));
   return iResult
  },
  init:function(){
   nimo.data.scrollWdith=document.body.scrollWidth;
   nimo.data.scrollHeight=document.body.scrollHeight;
   nimo.ele.canvas=document.getElementById('canvas'); 
   nimo.content=nimo.ele.canvas.getContext('2d');   
   nimo.ele.canvas.width=nimo.data.scrollWdith-50;
   nimo.ele.canvas.height=nimo.data.scrollHeight-100;
  },
  addBall:function(){
   var aRandomColor=[];
   aRandomColor.push(nimo.fn.creatRandom(0,255));
   aRandomColor.push(nimo.fn.creatRandom(0,255));
   aRandomColor.push(nimo.fn.creatRandom(0,255)); 
   var iRandomRadius=nimo.fn.creatRandom(nimo.data.radiusRange[0],nimo.data.radiusRange[1]);
   var oTempBall={
    coordsX:nimo.fn.creatRandom(iRandomRadius,nimo.ele.canvas.width-iRandomRadius),
    coordsY:nimo.fn.creatRandom(iRandomRadius,nimo.ele.canvas.height-iRandomRadius),
    radius:iRandomRadius,    
    bgColor:'rgba('+aRandomColor[0]+','+aRandomColor[1]+','+aRandomColor[2]+',0.5)'    
   }; 
   oTempBall.speedX=nimo.fn.creatRandom(nimo.data.speedRange[0],nimo.data.speedRange[1]);
   if(oTempBall.speedX===0){
    oTempBall.speedX=1
   }
   if(oTempBall.speedY===0){
    oTempBall.speedY=1
   }
   oTempBall.speedY=nimo.fn.creatRandom(nimo.data.speedRange[0],nimo.data.speedRange[1]);
   nimo.balls.push(oTempBall)
  },
  drawBall:function(bStatic){   
   var i,iSize;
   nimo.content.clearRect(0,0,nimo.ele.canvas.width,nimo.ele.canvas.height)
   for(var i=0,iSize=nimo.balls.length;i<iSize;i++){<