博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
p5.js简易实现 apple watch 三色表盘
阅读量:7108 次
发布时间:2019-06-28

本文共 872 字,大约阅读时间需要 2 分钟。

apple watch原图欣赏

莫名其妙的好看有不!

于是我就想着用js写写看,能否简单的实现这个效果,于是就真的实现了一个很简单(简陋)的效果。

图片预览一下:

p5.js

想要实现上述的简单效果用原生的canvas绘图API也不难实现,但是从实现这个效果来讲,我选用了 p5.js 这个js动画库。可以帮助你以优雅的方式实现这个效果。将注意力集中在实现效果上,而不是各种偏底层API的调用问题上。

CodePen预览

Demo很多瑕疵,欢迎fork修改、自由创作、使优秀...

代码

代码部分其实很简单,根据注释稍微看看就能明白,大致分为:

  1. 得到当前时间
  • 小时(注意24进制和表盘的12进制)
  • 分钟
  • 秒(我这里其实是获取的毫秒,为了平滑秒针的运动)
  1. 将时间映射(map)到角度
  2. 调用p5.js的绘图API,传入角度等参数
  3. p5.js利用canvas绘制动画

注意

在p5.js的绘图函数arc()中,有个bug

arc(x, y, xd, yd, start_angle, end_angle);复制代码

在这个函数中当start_angle == end_angle时会有一个bug,特定的我测试当start_angle == end_angle == -PI/2时会绘制一个半圆,但是显然这是不对的,当start_angle == end_angle时,我们应该什么都不绘制。

后来我到官方github仓库上,发现一个提到的就是关于这个问题。

最后我修改了映射区间避免了start_angle == end_angle == 0,从0 -> 360 改为 1 -> 360

secondsAngle = map(secondes, 0, 60 * 1000, 1, 360);minitesAngle = map(minites, 0, 60, 1, 360);hoursAngle = map(hours % 12, 0, 12, 1, 360);复制代码
最后等我写完了我才发现,这东西看不了时间,一看官方也不是用来看时间用的—.—

转载地址:http://dtvhl.baihongyu.com/

你可能感兴趣的文章
重新安装.net framework 4.5
查看>>
准备 LVM Volume Provider - 每天5分钟玩转 OpenStack(49)
查看>>
常用开发资源收集
查看>>
年近30,朋友聚会都聊什么?
查看>>
发布jar包至maven本地库及私服
查看>>
Xshell 创建RSA登录Linux 主机
查看>>
非常酷的国外网站导航设计案例欣赏
查看>>
goodsDetail点击图片变大
查看>>
ASP.NET身份验证的探讨
查看>>
Java反射与注解
查看>>
判断一个数是否为回文数,字符串是否为回文字符串
查看>>
Windows Live Writer 2009 客户端离线写51CTO博客
查看>>
date_default_timezone_set的问题
查看>>
不安装oracle客户端,用plsql连接oracle
查看>>
使用PowerDesigner去除Oracle建表脚本的双引号
查看>>
向前,向前
查看>>
让孩子爱上学习-获取安卓
查看>>
[iOS Animation]CALayer-图层时间 二
查看>>
更新日志 - fir.im 回归,上线 Android Studio 插件
查看>>
血性的青,尿性的春——《中国合伙人》影评
查看>>