我用 Canvas 画了一个根据天气变化的时钟屏保

380 阅读1分钟

一、前言

之前在学习 Canvas 的时候,看到一个时间分解的粒子动画效果很好, 然后就跟着做了一遍, 发现 Canvas 画图能力真的很强, 然后在这个基础上我增加了很多元素, 让其更加生动漂亮, 后面又增加了一些功能扩展了我的屏保。 先看一下效果, 点击演示

二、演示

夜晚晴天时 output.gif

白天晴天时

output.gif

雨天时还没有画。。。 有没有小伙伴可以帮我画一下 PR 一下

image.png

三、功能清单如下

1、已完成

  • 当前时间粒子动画
  • 自定义倒计时时间, 时间到音乐动画提醒
  • 调用天气接口,返回当地天气情况
  • 背景随天气接口显示不同的环境景色
  • 全屏、退出全屏
  • 调用一言API,增加每日一句

2、待完成

  • 完成雨天场景、季节场景
  • 完成重要节日彩蛋
  • 完成选择切换背景
  • 。。。

四、项目结构

image.png

主要逻辑讲解

1、 画小球的粒子效果,主要是计算 在digit.js中 2、 canvas 的背景通过 ctx.createPattern 可以嵌套 canvas

    let content = await createBackgroundCanvas();
    pattern = ctx.createPattern(content, "repeat");

3、全屏、收起全屏 在screen.js 中 4、倒计时逻辑在 timetip.js 中

五、 链接

github地址 体验链接

六、 总结

本文介绍了我在学习 Canvas 后, 通过突发奇想, 做了一款摸鱼学习小工具, 可以倒计时提醒喝水、番茄时钟, 等等等, 没事儿可以当屏使用,效果还是比较酷炫的