首页 > 语言 > JavaScript > 正文

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

2024-05-06 16:19:19
字体:
来源:转载
供稿:网友

这篇文章主要介绍了JS实现随机乱撞彩色圆球特效的方法,可实现彩色小球的碰撞效果,涉及随机函数与页面样式的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

 

 
  1. <!doctype html> 
  2. <html lang="en"
  3. <head> 
  4. <meta charset="UTF-8"
  5. <title>JS实现的随机乱撞的彩色圆球特效代码</title> 
  6. <style> 
  7. body{ 
  8. font-family: 微软雅黑;  
  9. body,h1{ 
  10. margin:0; 
  11. canvas{ 
  12. display:block;margin-left: auto;margin-right: auto; 
  13. border:1px solid #DDD;  
  14. background: -webkit-linear-gradient(top, #222,#111); 
  15. }  
  16. </style> 
  17. </head> 
  18. <body> 
  19. <h1>JS实现的随机乱撞的彩色圆球特效代码</h1> 
  20. <canvas id="canvas" > 
  21. </canvas> 
  22. <button id="stop">stop</button> 
  23. <button id="run">run</button> 
  24. <button id="addBall">addBall</button> 
  25. <script src="jquery-1.6.2.min.js"></script> 
  26. <script> 
  27. var nimo={ 
  28. aniamted:null
  29. content:null
  30. data:{ 
  31. radiusRange:[5,20], 
  32. speedRange:[-5,5], 
  33. scrollHeight:null
  34. scrollWdith:null 
  35. }, 
  36. balls:[], 
  37. ele:{ 
  38. canvas:null 
  39. }, 
  40. fn:{ 
  41. creatRandom:function(startInt,endInt){//生产随机数 
  42. var iResult;  
  43. iResult=startInt+(Math.floor(Math.random()*(endInt-startInt+1))); 
  44. return iResult 
  45. }, 
  46. init:function(){ 
  47. nimo.data.scrollWdith=document.body.scrollWidth; 
  48. nimo.data.scrollHeight=document.body.scrollHeight; 
  49. nimo.ele.canvas=document.getElementById('canvas');  
  50. nimo.content=nimo.ele.canvas.getContext('2d');  
  51. nimo.ele.canvas.width=nimo.data.scrollWdith-50; 
  52. nimo.ele.canvas.height=nimo.data.scrollHeight-100; 
  53. }, 
  54. addBall:function(){ 
  55. var aRandomColor=[]; 
  56. aRandomColor.push(nimo.fn.creatRandom(0,255)); 
  57. aRandomColor.push(nimo.fn.creatRandom(0,255)); 
  58. aRandomColor.push(nimo.fn.creatRandom(0,255));  
  59. var iRandomRadius=nimo.fn.creatRandom(nimo.data.radiusRange[0],nimo.data.radiusRange[1]); 
  60. var oTempBall={ 
  61. coordsX:nimo.fn.creatRandom(iRandomRadius,nimo.ele.canvas.width-iRandomRadius), 
  62. coordsY:nimo.fn.creatRandom(iRandomRadius,nimo.ele.canvas.height-iRandomRadius), 
  63. radius:iRandomRadius,  
  64. bgColor:'rgba('+aRandomColor[0]+','+aRandomColor[1]+','+aRandomColor[2]+',0.5)' 
  65. };  
  66. oTempBall.speedX=nimo.fn.creatRandom(nimo.data.speedRange[0],nimo.data.speedRange[1]); 
  67. if(oTempBall.speedX===0){ 
  68. oTempBall.speedX=1 
  69. if(oTempBall.speedY===0){ 
  70. oTempBall.speedY=1 
  71. oTempBall.speedY=nimo.fn.creatRandom(nimo.data.speedRange[0],nimo.data.speedRange[1]); 
  72. nimo.balls.push(oTempBall) 
  73. }, 
  74. drawBall:function(bStatic){  
  75. var i,iSize; 
  76. nimo.content.clearRect(0,0,nimo.ele.canvas.width,nimo.ele.canvas.height) 
  77. for(var i=0,iSize=nimo.balls.length;i<iSize;i++){ 
  78. var oTarger=nimo.balls[i];  
  79. nimo.content.beginPath(); 
  80. nimo.content.arc(oTarger.coordsX,oTarger.coordsY,oTarger.radius,0,10); 
  81. nimo.content.fillStyle=oTarger.bgColor;  
  82. nimo.content.fill(); 
  83. if(!bStatic){ 
  84. if(oTarger.coordsX+oTarger.radius>=nimo.ele.canvas.width){ 
  85. oTarger.speedX=-(Math.abs(oTarger.speedX)) 
  86. if(oTarger.coordsX-oTarger.radius<=0){ 
  87. oTarger.speedX=Math.abs(oTarger.speedX) 
  88. if(oTarger.coordsY-oTarger.radius<=0){ 
  89. oTarger.speedY=Math.abs(oTarger.speedY) 
  90. if(oTarger.coordsY+oTarger.radius>=nimo.ele.canvas.height){ 
  91. oTarger.speedY=-(Math.abs(oTarger.speedY)) 
  92. oTarger.coordsX=oTarger.coordsX+oTarger.speedX; 
  93. oTarger.coordsY=oTarger.coordsY+oTarger.speedY;  
  94. }  
  95. }, 
  96. run:function(){ 
  97. nimo.fn.drawBall(); 
  98. nimo.aniamted=setTimeout(function(){ 
  99. nimo.fn.drawBall(); 
  100. nimo.aniamted=setTimeout(arguments.callee,10) 
  101. },10) 
  102. }, 
  103. stop:function(){ 
  104. clearTimeout(nimo.aniamted) 
  105. window.onload=function(){ 
  106. nimo.fn.init(); 
  107. var i; 
  108. for(var i=0;i<10;i++){ 
  109. nimo.fn.addBall(); 
  110. nimo.fn.run(); 
  111. document.getElementById('stop').onclick=function(){ 
  112. nimo.fn.stop() 
  113. document.getElementById('run').onclick=function(){ 
  114. nimo.fn.stop() 
  115. nimo.fn.run() 
  116. document.getElementById('addBall').onclick=function(){ 
  117. var i; 
  118. for(var i=0;i<10;i++){ 
  119. nimo.fn.addBall();  
  120. nimo.fn.drawBall(true); 
  121. </script> 
  122. </body> 
  123. </html> 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选