A–G 代码样片
B 粒子
流动的丝线
无数细线跟着看不见的风流动。
- 适合:
- 思绪、情绪在流、平静下来
- 系列:
- A–G 代码样片
- 更新:
- 2026-10-29
流动丝线风
风格提示词
用代码(Canvas 2D)画一段"流动的丝线"的动画:无数细线跟着看不见的风流动。
适合讲:思绪、情绪在流、平静下来
关键词:流动、丝线、风
下面是我们自己写的参考实现:一个绘制函数 S.B1(c, w, h, t, s),c 是 canvas 的 2D context,w/h 是宽高,t 是秒,s 是给这个函数存状态用的空对象。公共的小工具函数在同一文件夹的 _公共函数.js 里。
S.B1 = (c, w, h, t, s, dpr) => {
if (!s.init) { s.init = 1; [s.bc, s.bx] = offscreen(w, h, dpr); s.bx.fillStyle = '#05080d'; s.bx.fillRect(0, 0, w, h); const r = rng(5); s.r = r; s.p = []; for (let i = 0; i < 800; i++) s.p.push([r() * w, r() * h, r() * 200, r()]); }
const b = s.bx, sc = 3.2 / Math.min(w, h); b.fillStyle = 'rgba(5,8,13,.07)'; b.fillRect(0, 0, w, h); b.lineWidth = .8;
for (const p of s.p) {
const a = nz(p[0] * sc, p[1] * sc, t * .12) * Math.PI, sp = Math.min(w, h) / 260;
const nx = p[0] + Math.cos(a) * sp, ny = p[1] + Math.sin(a) * sp;
b.strokeStyle = `hsla(${195 + p[3] * 40},60%,${62 + p[3] * 25}%,.4)`; b.beginPath(); b.moveTo(p[0], p[1]); b.lineTo(nx, ny); b.stroke();
p[0] = nx; p[1] = ny; p[2]--;
if (p[2] < 0 || nx < 0 || nx > w || ny < 0 || ny > h) { p[0] = s.r() * w; p[1] = s.r() * h; p[2] = 80 + s.r() * 200; }
}
c.drawImage(s.bc, 0, 0, w, h);
};
分享来源:B 站视频(341 种代码动画风格)