MissDaphne

Spark Explosion Tutorial

Dec 10th, 2014
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. <script type="text/javascript">
  2. // <![CDATA[
  3. var sparks=7; // how many sparks per clicksplosion
  4. var speed=35; // how fast - smaller is faster
  5. var bangs=1; // how many can be launched simultaneously (note that using too many can slow the script down)
  6. var colours=new Array('#ffe4ea', '#fcd0d9', '#f7e8ec', '#feb9c8');
  7. /****************************
  8. * Clicksplosion Effect *
  9. * (c) 2012 mf2fm web-design *
  10. * http://www.mf2fm.com/rv *
  11. * DON'T EDIT BELOW THIS BOX *
  12. ****************************/
  13. var intensity=new Array();
  14. var Xpos=new Array();
  15. var Ypos=new Array();
  16. var dX=new Array();
  17. var dY=new Array();
  18. var stars=new Array();
  19. var decay=new Array();
  20. var timers=new Array();
  21. var swide=800;
  22. var shigh=600;
  23. var sleft=sdown=0;
  24. var count=0;
  25. function addLoadEvent(funky) {
  26. var oldonload=window.onload;
  27. if (typeof(oldonload)!='function') window.onload=funky;
  28. else window.onload=function() {
  29. if (oldonload) oldonload();
  30. funky();
  31. }
  32. }
  33. addLoadEvent(clicksplode);
  34. function clicksplode() { if (document.getElementById) {
  35. var i, j;
  36. window.onscroll=set_scroll;
  37. window.onresize=set_width;
  38. document.onclick=eksplode;
  39. set_width();
  40. set_scroll();
  41. for (i=0; i<bangs; i++) for (j=sparks*i; j<sparks+sparks*i; j++) {
  42. stars[j]=createDiv('◆', 5);
  43. document.body.appendChild(stars[j]);
  44. }
  45. }}
  46. function createDiv(char, size) {
  47. var div, sty;
  48. div=document.createElement('div');
  49. sty=div.style;
  50. sty.font=size+'px monospace';
  51. sty.position='absolute';
  52. sty.backgroundColor='transparent';
  53. sty.visibility='hidden';
  54. sty.zIndex='101';
  55. div.appendChild(document.createTextNode(char));
  56. return (div);
  57. }
  58. function bang(N) {
  59. var i, Z, A=0;
  60. for (i=sparks*N; i<sparks*(N+1); i++) {
  61. if (decay[i]) {
  62. Z=stars[i].style;
  63. Xpos[i]+=dX[i];
  64. Ypos[i]+=(dY[i]+=1.25/intensity[N]);
  65. if (Xpos[i]>=swide || Xpos[i]<0 || Ypos[i]>=shigh+sdown || Ypos[i]<0) decay[i]=1;
  66. else {
  67. Z.left=Xpos[i]+'px';
  68. Z.top=Ypos[i]+'px';
  69. }
  70. if (decay[i]==15) Z.fontSize='17px';
  71. else if (decay[i]==7) Z.fontSize='1px';
  72. else if (decay[i]==1) Z.visibility='hidden';
  73. decay[i]--;
  74. }
  75. else A++;
  76. }
  77. if (A!=sparks) timers[N]=setTimeout('bang('+N+')', speed);
  78. }
  79. function eksplode(e) {
  80. var x, y, i, M, Z, N;
  81. set_scroll();
  82. y=(e)?e.pageY:event.y+sdown;
  83. x=(e)?e.pageX:event.x+sleft;
  84. N=++count%bangs;
  85. M=Math.floor(Math.random()*3*colours.length);
  86. intensity[N]=5+Math.random()*4;
  87. for (i=N*sparks; i<(N+1)*sparks; i++) {
  88. Xpos[i]=x;
  89. Ypos[i]=y-5;
  90. dY[i]=(Math.random()-0.5)*intensity[N];
  91. dX[i]=(Math.random()-0.5)*(intensity[N]-Math.abs(dY[i]))*1.25;
  92. decay[i]=16+Math.floor(Math.random()*16);
  93. Z=stars[i].style;
  94. if (M<colours.length) Z.color=colours[i%2?count%colours.length:M];
  95. else if (M<2*colours.length) Z.color=colours[count%colours.length];
  96. else Z.color=colours[i%colours.length];
  97. Z.fontSize='5px';
  98. Z.visibility='visible';
  99. }
  100. clearTimeout(timers[N]);
  101. bang(N);
  102. }
  103. function set_width() {
  104. var sw_min=999999;
  105. var sh_min=999999;
  106. if (document.documentElement && document.documentElement.clientWidth) {
  107. if (document.documentElement.clientWidth>0) sw_min=document.documentElement.clientWidth;
  108. if (document.documentElement.clientHeight>0) sh_min=document.documentElement.clientHeight;
  109. }
  110. if (typeof(self.innerWidth)=='number' && self.innerWidth) {
  111. if (self.innerWidth>0 && self.innerWidth<sw_min) sw_min=self.innerWidth;
  112. if (self.innerHeight>0 && self.innerHeight<sh_min) sh_min=self.innerHeight;
  113. }
  114. if (document.body.clientWidth) {
  115. if (document.body.clientWidth>0 && document.body.clientWidth<sw_min) sw_min=document.body.clientWidth;
  116. if (document.body.clientHeight>0 && document.body.clientHeight<sh_min) sh_min=document.body.clientHeight;
  117. }
  118. if (sw_min==999999 || sh_min==999999) {
  119. sw_min=800;
  120. sh_min=600;
  121. }
  122. swide=sw_min-7;
  123. shigh=sh_min-7;
  124. }
  125. function set_scroll() {
  126. if (typeof(self.pageYOffset)=='number') {
  127. sdown=self.pageYOffset;
  128. sleft=self.pageXOffset;
  129. }
  130. else if (document.body && (document.body.scrollTop || document.body.scrollLeft)) {
  131. sdown=document.body.scrollTop;
  132. sleft=document.body.scrollLeft;
  133. }
  134. else if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft)) {
  135. sleft=document.documentElement.scrollLeft;
  136. sdown=document.documentElement.scrollTop;
  137. }
  138. else {
  139. sdown=0;
  140. sleft=0;
  141. }
  142. }
  143. // ]]>
  144. </script>
Advertisement
Add Comment
Please, Sign In to add comment