数字下落

  1. window.onload = function() {
  2. var c = document.getElementById("c");
  3. var ctx = c.getContext("2d");
  4. //使画布全屏
  5. c.height = window.innerHeight;
  6. c.width = window.innerWidth;
  7. //要掉落的文字
  8. var txts = "0123456789";
  9. //转换为数组
  10. txts = txts.split("");
  11. var font_size = 16;
  12. var columns = c.width / font_size;
  13. //计算纵队数
  14. var drops = [];
  15. //初始值
  16. for (var x = 0; x < columns; x++)
  17. drops[x] = 1;
  18. //窗体大小发生改变
  19. window.onresize = function() {
  20. //使绘图区域全屏
  21. c.height = window.innerHeight;
  22. c.width = window.innerWidth;
  23. columns = c.width / font_size;
  24. //计算纵队数
  25. for (var x = 0; x < columns; x++)
  26. drops[x] = 1;
  27. }
  28. //进入全屏
  29. function requestFullScreen() {
  30. var de = document.documentElement;
  31. if (de.requestFullscreen) {
  32. de.requestFullscreen();
  33. } else if (de.mozRequestFullScreen) {
  34. de.mozRequestFullScreen();
  35. } else if (de.webkitRequestFullScreen) {
  36. de.webkitRequestFullScreen();
  37. }
  38. }
  39. //添加点击监听事件(点击全屏)
  40. document.body.addEventListener('click', function() {
  41. requestFullScreen();
  42. //调用全屏
  43. eleImage.requestPointerLock();
  44. // 锁定鼠标
  45. }, false);
  46. //绘制下落的文字
  47. function draw() {
  48. //让背景逐渐由透明到不透明
  49. ctx.fillStyle = "rgba(0, 0, 0, 0.05)";
  50. ctx.fillRect(0, 0, c.width, c.height);
  51. ctx.fillStyle = "#0F0";
  52. //文本颜色(绿色)
  53. ctx.font = font_size + "px arial";
  54. //逐行输出文字
  55. for (var i = 0; i < drops.length; i++) {
  56. //随机取要输出的文字
  57. var text = txts[Math.floor(Math.random() * txts.length)];
  58. //输出文字,注意坐标的计算
  59. ctx.fillText(text, i * font_size, drops[i] * font_size);
  60. //如果绘满一屏或随机数大于0.95(此数可自行调整,效果会不同)
  61. if (drops[i] * font_size > c.height || Math.random() > 0.95)
  62. drops[i] = 0;
  63. //用于Y轴坐标增加
  64. drops[i]++;
  65. }
  66. }
  67. setInterval(draw, 33);
  68. //定时执行
  69. }