模仿了一个网站主页的效果

2015/07/22 | 1分钟阅读 | 更新于 2015/07/22

<!-- 更新:这里曾经是一个 iframe,不过目前这个已经无法访问了。 -->
<iframe src="http://bin16.farbox.com/lab/canvas-line-error.html" width="320" height="240"></iframe>

看到 http://sebug.net/ 主页的效果很棒,打算模仿一下。当然我知道这和我放在上面的效果并不一样,先不管这个。

我观察了这个网站的效果:

  • 左中右三块 canvas,是各自独立的。
  • 每个小原点从边缘出现,移动方向是固定的,直到移出边界。
  • 小圆点速度基本一致,这点不重要。
  • 每两个原点足够接近的时候会有线连接它们两个。
  • 距离越短线越透明,好像粗细隐约有些变化,看不清清楚,不过不影响。

流程就是

  1. 生成一堆点的数组,元素是包含了坐标,角度或者分速度的对象
  2. 每一轮循环把所有点绘制在 canvas 里
  3. 对与任意两点计算间距,根据合适的公式计算透明度或者线宽,绘制连线
  4. 给每一个点的坐标加上对应的速度得到移动后的坐标,返回给点对象的数组
  5. 利用 setTimeout 开动循环

但是我在过程中对 beginPath 和 closePath 有点迷惑,总是得到一些莫名其妙的效果,比如你现在看到的 canvas 里面总会有一个硕大的圆圈斜穿过去,它是依附于某一个点的。而且还有因为 beginPath 和 closePath 导致的别的一些问题存在,比如透明度会失效,比如不会画出连线。。

现在我嵌进来的这个是我注释掉每次连线完成后把透明度恢复为1的语句得到的效果。

© 2026 香蕉引擎故障报告

🌱 Powered by Hugo with theme Dream.

关于

要怎么介绍自己呢,🤔。

很早以前是作为 Web 前端在学习的,但是工作第一年就成为了全干工程师。喜欢尝试各种东西,什么都会一点。

一直很喜欢 Ebiten 游戏引擎 ,特别简洁,用它做过一些小东西,可以查看这个分类 。另外特别推荐这个木鱼 ,是一个相对完整的小玩意儿,包含手搓的一个简单的 UI 框架;支持鼠标和键盘操作;有多语言和主题切换功能;同时支持 Web 端和客户端。它的源代码在 bin16/wooden-fish

主题

网站基于 Hugo,当前使用的是 hugo-theme-dream 主题的修改版 ,根据我的需要,做了一些对 PaperMod 的兼容。

我自己也写过主题 ,但是没有别人写的好看。

正在从我的笔记中往外搬运内容

等待更新:

  • 从《锈湖》中学了些什么东西
  • 我拿 React 写解谜游戏的经过
  • 基于 Pocketbase 的 Pocket Memos
  • 数独!