Advertisement
LanhLung

Pháo hoa

Jan 6th, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. <!-- Pháo hoa -->
  2. <script type='text/javascript'>
  3. // <![CDATA[
  4. var bits=80;
  5. var speed=40; // Tốc độ như thế nào, càng nhỏ càng nhanh
  6. var bangs=10; // Số pháo hoa có thể xuất hiện cùng lúc (Nhiều quá sẽ có thể gây lag cho trình duyệt)
  7. var colours=new Array("#03f", "#f03", "#0e0", "#93f", "#0cf", "#f93", "#f0c");
  8. // Xanh Đỏ Xanh lá Tía Xanh cyan Cam Hồng
  9. var bangheight=new Array();
  10. var intensity=new Array();
  11. var colour=new Array();
  12. var Xpos=new Array();
  13. var Ypos=new Array();
  14. var dX=new Array();
  15. var dY=new Array();
  16. var stars=new Array();
  17. var decay=new Array();
  18. var swide=800;
  19. var shigh=600;
  20. var boddie;
  21. window.onload=function() { if (document.getElementById) {
  22. var i;
  23. boddie=document.createElement("div");
  24. boddie.style.position="fixed";
  25. boddie.style.top="0px";
  26. boddie.style.left="0px";
  27. boddie.style.overflow="visible";
  28. boddie.style.width="1px";
  29. boddie.style.height="1px";
  30. boddie.style.backgroundColor="transparent";
  31. document.body.appendChild(boddie);
  32. set_width();
  33. for (i=0; i<bangs; i++) {
  34. write_fire(i);
  35. launch(i);
  36. setInterval('stepthrough('+i+')', speed);
  37. }
  38. }}
  39. function write_fire(N) {
  40. var i, rlef, rdow;
  41. stars[N+'r']=createDiv('|', 12);
  42. boddie.appendChild(stars[N+'r']);
  43. for (i=bits*N; i<bits+bits*N; i++) {
  44. stars[i]=createDiv('*', 13);
  45. boddie.appendChild(stars[i]);
  46. }
  47. }
  48. function createDiv(char, size) {
  49. var div=document.createElement("div");
  50. div.style.font=size+"px monospace";
  51. div.style.position="absolute";
  52. div.style.backgroundColor="transparent";
  53. div.appendChild(document.createTextNode(char));
  54. return (div);
  55. }
  56. function launch(N) {
  57. colour[N]=Math.floor(Math.random()*colours.length);
  58. Xpos[N+"r"]=swide*0.5;
  59. Ypos[N+"r"]=shigh-5;
  60. bangheight[N]=Math.round((0.5+Math.random())*shigh*0.4);
  61. dX[N+"r"]=(Math.random()-0.5)*swide/bangheight[N];
  62. if (dX[N+"r"]>1.25) stars[N+"r"].firstChild.nodeValue="/";
  63. else if (dX[N+"r"]<-1.25) stars[N+"r"].firstChild.nodeValue="\\";
  64. else stars[N+"r"].firstChild.nodeValue="|";
  65. stars[N+"r"].style.color=colours[colour[N]];
  66. }
  67. function bang(N) {
  68. var i, Z, A=0;
  69. for (i=bits*N; i<bits+bits*N; i++) {
  70. Z=stars[i].style;
  71. Z.left=Xpos[i]+"px";
  72. Z.top=Ypos[i]+"px";
  73. if (decay[i]) decay[i]--;
  74. else A++;
  75. if (decay[i]==15) Z.fontSize="7px";
  76. else if (decay[i]==7) Z.fontSize="2px";
  77. else if (decay[i]==1) Z.visibility="hidden";
  78. Xpos[i]+=dX[i];
  79. Ypos[i]+=(dY[i]+=1.25/intensity[N]);
  80. }
  81. if (A!=bits) setTimeout("bang("+N+")", speed);
  82. }
  83. function stepthrough(N) {
  84. var i, M, Z;
  85. var oldx=Xpos[N+"r"];
  86. var oldy=Ypos[N+"r"];
  87. Xpos[N+"r"]+=dX[N+"r"];
  88. Ypos[N+"r"]-=4;
  89. if (Ypos[N+"r"]<bangheight[N]) {
  90. M=Math.floor(Math.random()*3*colours.length);
  91. intensity[N]=5+Math.random()*4;
  92. for (i=N*bits; i<bits+bits*N; i++) {
  93. Xpos[i]=Xpos[N+"r"];
  94. Ypos[i]=Ypos[N+"r"];
  95. dY[i]=(Math.random()-0.5)*intensity[N];
  96. dX[i]=(Math.random()-0.5)*(intensity[N]-Math.abs(dY[i]))*1.25;
  97. decay[i]=16+Math.floor(Math.random()*16);
  98. Z=stars[i];
  99. if (M<colours.length) Z.style.color=colours[i%2?colour[N]:M];
  100. else if (M<2*colours.length) Z.style.color=colours[colour[N]];
  101. else Z.style.color=colours[i%colours.length];
  102. Z.style.fontSize="13px";
  103. Z.style.visibility="visible";
  104. }
  105. bang(N);
  106. launch(N);
  107. }
  108. stars[N+"r"].style.left=oldx+"px";
  109. stars[N+"r"].style.top=oldy+"px";
  110. }
  111. window.onresize=set_width;
  112. function set_width() {
  113. var sw_min=999999;
  114. var sh_min=999999;
  115. if (document.documentElement && document.documentElement.clientWidth) {
  116. if (document.documentElement.clientWidth>0) sw_min=document.documentElement.clientWidth;
  117. if (document.documentElement.clientHeight>0) sh_min=document.documentElement.clientHeight;
  118. }
  119. if (typeof(self.innerWidth)!="undefined" && self.innerWidth) {
  120. if (self.innerWidth>0 && self.innerWidth<sw_min) sw_min=self.innerWidth;
  121. if (self.innerHeight>0 && self.innerHeight<sh_min) sh_min=self.innerHeight;
  122. }
  123. if (document.body.clientWidth) {
  124. if (document.body.clientWidth>0 && document.body.clientWidth<sw_min) sw_min=document.body.clientWidth;
  125. if (document.body.clientHeight>0 && document.body.clientHeight<sh_min) sh_min=document.body.clientHeight;
  126. }
  127. if (sw_min==999999 || sh_min==999999) {
  128. sw_min=800;
  129. sh_min=600;
  130. }
  131. swide=sw_min;
  132. shigh=sh_min;
  133. }
  134. // ]]>
  135. </script>
  136. <!-- Kết thúc pháo hoa -->
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement