Advertisement
danateruel

Firework Effect

Jul 11th, 2012
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.32 KB | None | 0 0
  1. <!--Paste this code before the </head> tag-->
  2.  
  3. <script type="text/javascript">
  4. // <![CDATA[
  5. var bits=80; // how many bits
  6. var speed=33; // how fast - smaller is faster
  7. var bangs=5; // how many can be launched simultaneously (note that using too many can slow the script down)
  8. var colours=new Array("#03f", "#f03", "#0e0", "#93f", "#0cf", "#f93", "#f0c");
  9. // blue red green purple cyan orange pink
  10.  
  11. /****************************
  12. * Fireworks Effect *
  13. *(c)2004-11 mf2fm web-design*
  14. * http://www.mf2fm.com/rv *
  15. * DON'T EDIT BELOW THIS BOX *
  16. ****************************/
  17. var bangheight=new Array();
  18. var intensity=new Array();
  19. var colour=new Array();
  20. var Xpos=new Array();
  21. var Ypos=new Array();
  22. var dX=new Array();
  23. var dY=new Array();
  24. var stars=new Array();
  25. var decay=new Array();
  26. var swide=800;
  27. var shigh=600;
  28. var boddie;
  29.  
  30. window.onload=function() { if (document.getElementById) {
  31. var i;
  32. boddie=document.createElement("div");
  33. boddie.style.position="fixed";
  34. boddie.style.top="0px";
  35. boddie.style.left="0px";
  36. boddie.style.overflow="visible";
  37. boddie.style.width="1px";
  38. boddie.style.height="1px";
  39. boddie.style.backgroundColor="transparent";
  40. document.body.appendChild(boddie);
  41. set_width();
  42. for (i=0; i<bangs; i++) {
  43. write_fire(i);
  44. launch(i);
  45. setInterval('stepthrough('+i+')', speed);
  46. }
  47. }}
  48.  
  49. function write_fire(N) {
  50. var i, rlef, rdow;
  51. stars[N+'r']=createDiv('|', 12);
  52. boddie.appendChild(stars[N+'r']);
  53. for (i=bits*N; i<bits+bits*N; i++) {
  54. stars[i]=createDiv('*', 13);
  55. boddie.appendChild(stars[i]);
  56. }
  57. }
  58.  
  59. function createDiv(char, size) {
  60. var div=document.createElement("div");
  61. div.style.font=size+"px monospace";
  62. div.style.position="absolute";
  63. div.style.backgroundColor="transparent";
  64. div.appendChild(document.createTextNode(char));
  65. return (div);
  66. }
  67.  
  68. function launch(N) {
  69. colour[N]=Math.floor(Math.random()*colours.length);
  70. Xpos[N+"r"]=swide*0.5;
  71. Ypos[N+"r"]=shigh-5;
  72. bangheight[N]=Math.round((0.5+Math.random())*shigh*0.4);
  73. dX[N+"r"]=(Math.random()-0.5)*swide/bangheight[N];
  74. if (dX[N+"r"]>1.25) stars[N+"r"].firstChild.nodeValue="/";
  75. else if (dX[N+"r"]<-1.25) stars[N+"r"].firstChild.nodeValue="\\";
  76. else stars[N+"r"].firstChild.nodeValue="|";
  77. stars[N+"r"].style.color=colours[colour[N]];
  78. }
  79.  
  80. function bang(N) {
  81. var i, Z, A=0;
  82. for (i=bits*N; i<bits+bits*N; i++) {
  83. Z=stars[i].style;
  84. Z.left=Xpos[i]+"px";
  85. Z.top=Ypos[i]+"px";
  86. if (decay[i]) decay[i]--;
  87. else A++;
  88. if (decay[i]==15) Z.fontSize="7px";
  89. else if (decay[i]==7) Z.fontSize="2px";
  90. else if (decay[i]==1) Z.visibility="hidden";
  91. Xpos[i]+=dX[i];
  92. Ypos[i]+=(dY[i]+=1.25/intensity[N]);
  93. }
  94. if (A!=bits) setTimeout("bang("+N+")", speed);
  95. }
  96.  
  97. function stepthrough(N) {
  98. var i, M, Z;
  99. var oldx=Xpos[N+"r"];
  100. var oldy=Ypos[N+"r"];
  101. Xpos[N+"r"]+=dX[N+"r"];
  102. Ypos[N+"r"]-=4;
  103. if (Ypos[N+"r"]<bangheight[N]) {
  104. M=Math.floor(Math.random()*3*colours.length);
  105. intensity[N]=5+Math.random()*4;
  106. for (i=N*bits; i<bits+bits*N; i++) {
  107. Xpos[i]=Xpos[N+"r"];
  108. Ypos[i]=Ypos[N+"r"];
  109. dY[i]=(Math.random()-0.5)*intensity[N];
  110. dX[i]=(Math.random()-0.5)*(intensity[N]-Math.abs(dY[i]))*1.25;
  111. decay[i]=16+Math.floor(Math.random()*16);
  112. Z=stars[i];
  113. if (M<colours.length) Z.style.color=colours[i%2?colour[N]:M];
  114. else if (M<2*colours.length) Z.style.color=colours[colour[N]];
  115. else Z.style.color=colours[i%colours.length];
  116. Z.style.fontSize="13px";
  117. Z.style.visibility="visible";
  118. }
  119. bang(N);
  120. launch(N);
  121. }
  122. stars[N+"r"].style.left=oldx+"px";
  123. stars[N+"r"].style.top=oldy+"px";
  124. }
  125.  
  126. window.onresize=set_width;
  127. function set_width() {
  128. var sw_min=999999;
  129. var sh_min=999999;
  130. if (document.documentElement && document.documentElement.clientWidth) {
  131. if (document.documentElement.clientWidth>0) sw_min=document.documentElement.clientWidth;
  132. if (document.documentElement.clientHeight>0) sh_min=document.documentElement.clientHeight;
  133. }
  134. if (typeof(self.innerWidth)!="undefined" && self.innerWidth) {
  135. if (self.innerWidth>0 && self.innerWidth<sw_min) sw_min=self.innerWidth;
  136. if (self.innerHeight>0 && self.innerHeight<sh_min) sh_min=self.innerHeight;
  137. }
  138. if (document.body.clientWidth) {
  139. if (document.body.clientWidth>0 && document.body.clientWidth<sw_min) sw_min=document.body.clientWidth;
  140. if (document.body.clientHeight>0 && document.body.clientHeight<sh_min) sh_min=document.body.clientHeight;
  141. }
  142. if (sw_min==999999 || sh_min==999999) {
  143. sw_min=800;
  144. sh_min=600;
  145. }
  146. swide=sw_min;
  147. shigh=sh_min;
  148. }
  149. // ]]>
  150. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement