JS实现随机乱撞彩色圆球特效的方法


Posted in Javascript onMay 05, 2015

本文实例讲述了JS实现随机乱撞彩色圆球特效的方法。分享给大家供大家参考。具体实现方法如下:

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>JS实现的随机乱撞的彩色圆球特效代码</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="jquery-1.6.2.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++){
  var oTarger=nimo.balls[i];  
  nimo.content.beginPath();
  nimo.content.arc(oTarger.coordsX,oTarger.coordsY,oTarger.radius,0,10);
  nimo.content.fillStyle=oTarger.bgColor;  
  nimo.content.fill();
  if(!bStatic){
   if(oTarger.coordsX+oTarger.radius>=nimo.ele.canvas.width){
   oTarger.speedX=-(Math.abs(oTarger.speedX))
   }
   if(oTarger.coordsX-oTarger.radius<=0){
   oTarger.speedX=Math.abs(oTarger.speedX)
   }
   if(oTarger.coordsY-oTarger.radius<=0){
   oTarger.speedY=Math.abs(oTarger.speedY)
   }
   if(oTarger.coordsY+oTarger.radius>=nimo.ele.canvas.height){
   oTarger.speedY=-(Math.abs(oTarger.speedY))
   }
   oTarger.coordsX=oTarger.coordsX+oTarger.speedX;
   oTarger.coordsY=oTarger.coordsY+oTarger.speedY;  
  }  
  }
 },
 run:function(){
  nimo.fn.drawBall();
  nimo.aniamted=setTimeout(function(){
  nimo.fn.drawBall();
  nimo.aniamted=setTimeout(arguments.callee,10)
  },10)
 },
 stop:function(){
  clearTimeout(nimo.aniamted)
 }
 }
}
window.onload=function(){
 nimo.fn.init();
 var i;
 for(var i=0;i<10;i++){
 nimo.fn.addBall();
 }
 nimo.fn.run();
 document.getElementById('stop').onclick=function(){
 nimo.fn.stop()
 }
 document.getElementById('run').onclick=function(){
 nimo.fn.stop()
 nimo.fn.run()
 }
 document.getElementById('addBall').onclick=function(){
 var i;
 for(var i=0;i<10;i++){
  nimo.fn.addBall(); 
 }
 nimo.fn.drawBall(true);
 }
}
</script>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
定义select的边框颜色
Apr 28 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
移动设备web开发首选框架:zeptojs介绍
Jan 29 Javascript
Angular.js如何从PHP读取后台数据
Mar 24 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
Oct 26 Javascript
JS实现购物车特效
Feb 02 Javascript
Bootstrap表格使用方法详解
Feb 17 Javascript
JS中正则表达式全局匹配模式 /g用法详解
Apr 01 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
Apr 01 Javascript
微信小程序滑动选择器的实现代码
Aug 10 Javascript
jquery实现图片随机排列的方法
May 04 #Javascript
jquery实现的美女拼图游戏实例
May 04 #Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
May 04 #Javascript
jQuery插件kinMaxShow扩展效果用法实例
May 04 #Javascript
jQuery消息提示框插件Tipso
May 04 #Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 #Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
May 04 #Javascript
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
ThinkPHP路由详解
2015/07/27 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
php给数组赋值的实例方法
2019/09/26 PHP
永不消失的title提示代码
2007/02/15 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
护理毕业生自荐信范文
2013/12/22 职场文书
工会趣味活动方案
2014/08/18 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书