会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 娱乐最前沿,一个专注明星八卦的网站
当前位置:主页 > 历史文化 > 正文

黑客帝国代码特效(一招让妹子尖叫)(3)

时间:2022-12-27 11:35 来源:网络整理 作者:娱乐最前沿 阅读:

// Simple string stream buffer stdout flush at once let outBuffer = []; function write(chars) { return outBuffer.push(chars); } function flush() { process.stdout.write(outBuffer.join(``)); return outBuffer = []; } function rand(start, end) { return start Math.floor(Math.random() * (end - start)); }

matrix-rain 的启动代码如下:

const args = argParser.parseArgs(); const matrixRain = new MatrixRain(args); function start() { if (!process.stdout.isTTY) { console.error(`Error: Output is not a text terminal`); process.exit(1); } // clear terminal and use alt buffer process.stdin.setRawMode(true); write(ansi.useAltBuffer()); write(ansi.cursorInvisible()); write(ansi.colors.bgBlack()); write(ansi.colors.fgBlack()); write(ansi.clearScreen()); flush(); matrixRain.resizeDroplets(); } function stop() { write(ansi.cursorVisible()); write(ansi.clearScreen()); write(ansi.cursorHome()); write(ansi.useNormalBuffer()); flush(); process.exit(); } process.on(`SIGINT`, () => stop()); process.stdin.on(`data`, () => stop()); process.stdout.on(`resize`, () => matrixRain.resizeDroplets()); setInterval(() => matrixRain.renderFrame(), 16); // 60FPS start();

起首初始化一个 MatrixRain 类,然后挪用 start 要领。start 要领中通过 MatrixRain 的 resizeDroplets 要领来初始化要表现的内容。

MatrixRain 类实例中打点着一个 colDroplets 数组,生涯这每一列的雨滴。在 resizeDroplets 中我们可以看到,每一列有两个雨滴。

在启动代码中我们还可以看到,每隔 16 毫秒会挪用一次 renderFrame 要领来绘制页面。而 renderFrame 要领中,会遍历每一个 colDroplet 中的每一个雨滴。因为每一个雨滴的初始位置和速率都是随机的,通过 droplet.alive 和 droplet.speed 的比值来确定每一次渲染的时辰是否更新这个雨滴位置,从而到达每个雨滴的着落东倒西歪的结果。当雨滴已经移出屏幕可视范畴后会被重置。

每一次渲染,都是通过 write 函数向全局的缓存中写入数据,之后通过 flush 函数一把更新。

(责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。