当前位置:   article > 正文

用HTML5和JavaScript实现黑客帝国风格的字符雨效果

用HTML5和JavaScript实现黑客帝国风格的字符雨效果

目录

一、程序代码

二、代码原理

三、运行效果


一、程序代码

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>黑客帝国字符雨</title> <!-- 设置网页标题 -->
  6. <meta name="keywords" content="流星雨,HTML5,JavaScript" /> <!-- 设置关键词 -->
  7. <meta name="description" content="使用HTML5和JavaScript实现流星雨效果" /> <!-- 设置描述信息 -->
  8. <style>
  9. body {
  10. margin: 0;
  11. padding: 0;
  12. background: #000000; /* 设置背景颜色为黑色 */
  13. overflow: hidden; /* 隐藏溢出部分 */
  14. }
  15. canvas {
  16. display: block; /* 设置画布为块级元素 */
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <canvas style="background:#000000;" id="canvas"></canvas> <!-- 创建画布 -->
  22. <script>
  23. var canvas = document.getElementById("canvas"); // 获取画布元素
  24. var ctx = canvas.getContext("2d"); // 获取画布上下文
  25. var s = window.screen; // 获取屏幕信息
  26. var w = s.width; // 获取屏幕宽度
  27. var h = s.height; // 获取屏幕高度
  28. canvas.width = w; // 设置画布宽度为屏幕宽度
  29. canvas.height = h; // 设置画布高度为屏幕高度
  30. var fontSize = 14; // 设置字符大小
  31. var clos = Math.floor(w / fontSize); // 计算每行字符数
  32. var drops = []; // 存储水滴位置的数组
  33. var str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 设置用于显示的字符集
  34. for (var i = 0; i < clos; i++) { // 初始化水滴位置数组
  35. drops.push(0);
  36. }
  37. function drawString() {
  38. ctx.fillStyle = "rgba(0,0,0,0.05)"; // 设置填充颜色
  39. ctx.fillRect(0, 0, w, h); // 用指定颜色填充整个画布
  40. ctx.font = "600 " + (Math.random() * 15 + 10) + "px Arial"; // 设置字体样式和大小
  41. ctx.fillStyle = "#00ff00"; // 设置字符颜色为绿色
  42. for (var i = 0; i < clos; i++) { // 遍历每一列
  43. var x = i * fontSize; // 计算字符的x坐标
  44. var y = drops[i] * fontSize; // 计算字符的y坐标
  45. ctx.fillText(str[Math.floor(Math.random() * str.length)], x, y); // 在指定位置绘制随机字符
  46. if (y > h && Math.random() > 0.99) { // 如果字符超出屏幕并且随机数大于0.99
  47. drops[i] = 0; // 将该列的字符位置重置为0
  48. }
  49. drops[i]++; // 增加字符位置,实现字符下落效果
  50. }
  51. }
  52. setInterval(drawString, 30); // 每隔30毫秒调用一次drawString函数,实现动画效果
  53. </script>
  54. </body>
  55. </html>

二、代码原理

这段代码实现了一个基于 HTML5 和 JavaScript 的字符雨效果,类似于电影《黑客帝国》中的场景。下面是对代码的解析:

  1. 在 HTML 部分:

    • <canvas> 标签用于绘制字符雨效果。
    • 通过内联样式和 id 属性设置画布的背景色和标识符为 "canvas"。
  2. 在 JavaScript 部分:

    • 获取了屏幕的宽度和高度作为画布的尺寸。
    • 定义了字符大小、每行字符数、水滴数组以及用于显示的字符集。
    • 创建了 drawString 函数,用于绘制字符雨效果:
      • 设置画布的填充颜色为半透明黑色,用于实现字符尾迹效果。
      • 随机设置字体样式和大小,并将字符颜色设为绿色。
      • 遍历每一列,根据当前水滴位置在该列绘制随机字符,并控制字符下落效果。
      • 当字符超出屏幕且随机数大于0.99时,重置该列字符位置。
    • 使用 setInterval 函数每隔30毫秒调用 drawString 函数,实现字符雨动画效果。

三、运行效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/128910
推荐阅读
相关标签
  

闽ICP备14008679号