stars.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. function $i(id) { return document.getElementById(id); }
  2. function $r(parent,child) { (document.getElementById(parent)).removeChild(document.getElementById(child)); }
  3. function $t(name) { return document.getElementsByTagName(name); }
  4. function $c(code) { return String.fromCharCode(code); }
  5. function $h(value) { return ('0'+Math.max(0,Math.min(255,Math.round(value))).toString(16)).slice(-2); }
  6. function _i(id,value) { $t('div')[id].innerHTML+=value; }
  7. function _h(value) { return !hires?value:Math.round(value/2); }
  8. function get_screen_size()
  9. {
  10. var w=document.documentElement.clientWidth;
  11. var h=document.documentElement.clientHeight;
  12. return Array(w,h);
  13. }
  14. var url=document.location.href;
  15. var flag=true;
  16. var test=true;
  17. var n=parseInt((url.indexOf('n=')!=-1)?url.substring(url.indexOf('n=')+2,((url.substring(url.indexOf('n=')+2,url.length)).indexOf('&')!=-1)?url.indexOf('n=')+2+(url.substring(url.indexOf('n=')+2,url.length)).indexOf('&'):url.length):512);
  18. var w=0;
  19. var h=0;
  20. var x=0;
  21. var y=0;
  22. var z=0;
  23. var star_color_ratio=0;
  24. var star_x_save,star_y_save;
  25. var star_ratio=256;
  26. var star_speed=1;
  27. var star_speed_save=0;
  28. var star=new Array(n);
  29. var color;
  30. var opacity=0.1;
  31. var cursor_x=0;
  32. var cursor_y=0;
  33. var mouse_x=0;
  34. var mouse_y=0;
  35. var canvas_x=0;
  36. var canvas_y=0;
  37. var canvas_w=0;
  38. var canvas_h=0;
  39. var context;
  40. var key;
  41. var ctrl;
  42. var timeout;
  43. var fps=0;
  44. function init()
  45. {
  46. var a=0;
  47. for(var i=0;i<n;i++)
  48. {
  49. star[i]=new Array(5);
  50. star[i][0]=Math.random()*w*2-x*2;
  51. star[i][1]=Math.random()*h*2-y*2;
  52. star[i][2]=Math.round(Math.random()*z);
  53. star[i][3]=0;
  54. star[i][4]=0;
  55. }
  56. var starfield=$i('starfield');
  57. starfield.style.position='absolute';
  58. starfield.width=w;
  59. starfield.height=h;
  60. context=starfield.getContext('2d');
  61. context.fillStyle='rgb(0,0,0)';
  62. context.strokeStyle='rgb(255,255,255)';
  63. }
  64. function anim()
  65. {
  66. mouse_x=cursor_x-x;
  67. mouse_y=cursor_y-y;
  68. context.fillRect(0,0,w,h);
  69. for(var i=0;i<n;i++)
  70. {
  71. test=true;
  72. star_x_save=star[i][3];
  73. star_y_save=star[i][4];
  74. star[i][0]+=mouse_x>>4; if(star[i][0]>x<<1) { star[i][0]-=w<<1; test=false; } if(star[i][0]<-x<<1) { star[i][0]+=w<<1; test=false; }
  75. star[i][1]+=mouse_y>>4; if(star[i][1]>y<<1) { star[i][1]-=h<<1; test=false; } if(star[i][1]<-y<<1) { star[i][1]+=h<<1; test=false; }
  76. star[i][2]-=star_speed; if(star[i][2]>z) { star[i][2]-=z; test=false; } if(star[i][2]<0) { star[i][2]+=z; test=false; }
  77. star[i][3]=x+(star[i][0]/star[i][2])*star_ratio;
  78. star[i][4]=y+(star[i][1]/star[i][2])*star_ratio;
  79. if(star_x_save>0&&star_x_save<w&&star_y_save>0&&star_y_save<h&&test)
  80. {
  81. context.lineWidth=(1-star_color_ratio*star[i][2])*2;
  82. context.beginPath();
  83. context.moveTo(star_x_save,star_y_save);
  84. context.lineTo(star[i][3],star[i][4]);
  85. context.stroke();
  86. context.closePath();
  87. }
  88. }
  89. timeout=setTimeout('anim()',fps);
  90. }
  91. function release()
  92. {
  93. switch(key)
  94. {
  95. case 13:
  96. context.fillStyle='rgb(0,0,0)';
  97. break;
  98. }
  99. }
  100. function start()
  101. {
  102. resize();
  103. anim();
  104. }
  105. function resize()
  106. {
  107. w=parseInt((url.indexOf('w=')!=-1)?url.substring(url.indexOf('w=')+2,((url.substring(url.indexOf('w=')+2,url.length)).indexOf('&')!=-1)?url.indexOf('w=')+2+(url.substring(url.indexOf('w=')+2,url.length)).indexOf('&'):url.length):get_screen_size()[0]);
  108. h=parseInt((url.indexOf('h=')!=-1)?url.substring(url.indexOf('h=')+2,((url.substring(url.indexOf('h=')+2,url.length)).indexOf('&')!=-1)?url.indexOf('h=')+2+(url.substring(url.indexOf('h=')+2,url.length)).indexOf('&'):url.length):get_screen_size()[1]);
  109. x=Math.round(w/2);
  110. y=Math.round(h/2);
  111. z=(w+h)/2;
  112. star_color_ratio=1/z;
  113. cursor_x=x;
  114. cursor_y=y;
  115. init();
  116. }