一个用于演练/演示的桌面时钟工具:两个窗口 —— 控制窗口(普通)与时钟窗口(无边框、 可拖动、可拖边缘改大小,由控制窗口开与关)。 功能 - 两个窗口各自的「始终置顶」开关 - 显示样式:纯数字 / 圆形表盘,切换立即生效 - 实时设定时间(含「填入当前显示时间」) - 倍率:支持正数、负数(倒转)、0(暂停)、小数 - 暂停 / 继续(继续时回到暂停前的倍率,按钮文案会显示是几倍) - 快进五档:+5 秒 / +1 分钟 / +5 分钟 / +10 分钟 / +30 分钟 实现要点 - 走时是「基准时间 + 基准时刻 + 倍率」的锚点式模型(不累加、零漂移); 倍率、暂停、倒转、快进因此是同一套机制的四个用法,互不打架 - 跳转动画做在「呈现时间」这一层:数字滚动与表盘指针扫动共用同一个中间值, 所以永远同步,也不会跨 12 点倒着转一圈 - 无边框窗口的拖动(CSS app-region + 控件 no-drag)与拖边缘改大小 (自己算几何 + IPC setBounds,因为 frame:false 下系统边缘命中不可靠) 测试 152 例:走时模型 / 改大小几何 / 呈现时间 / 两个渲染进程(DOM 桩)
76 lines
1.8 KiB
JSON
76 lines
1.8 KiB
JSON
{
|
|
"name": "clocklab",
|
|
"version": "1.0.0",
|
|
"description": "ClockLab - 可调速桌面时钟(数字/表盘,支持倍率、暂停、倒转、快进)",
|
|
"author": "AskaEth",
|
|
"license": "MIT",
|
|
"private": true,
|
|
"main": "main.js",
|
|
"scripts": {
|
|
"start": "electron .",
|
|
"selftest": "electron . --selftest",
|
|
"test": "node test/clock-model.test.js && node test/resize.test.js && node test/presented-time.test.js && node test/renderer-clock.dom-test.js && node test/renderer-clock-anim.dom-test.js && node test/renderer-control.dom-test.js",
|
|
"dist:win": "electron-builder --win --x64",
|
|
"dist:linux": "electron-builder --linux --arm64"
|
|
},
|
|
"devDependencies": {
|
|
"electron": "38.2.2",
|
|
"electron-builder": "26.15.3"
|
|
},
|
|
"build": {
|
|
"appId": "com.askasoft.clocklab",
|
|
"productName": "ClockLab",
|
|
"directories": {
|
|
"output": "dist",
|
|
"buildResources": "build"
|
|
},
|
|
"files": [
|
|
"main.js",
|
|
"preload.js",
|
|
"src/**/*",
|
|
"renderer/**/*",
|
|
"!**/*.md"
|
|
],
|
|
"win": {
|
|
"icon": "build/icon.ico",
|
|
"artifactName": "ClockLab-${version}-${arch}.${ext}",
|
|
"target": [
|
|
{
|
|
"target": "portable",
|
|
"arch": [
|
|
"x64"
|
|
]
|
|
},
|
|
{
|
|
"target": "zip",
|
|
"arch": [
|
|
"x64"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"portable": {
|
|
"artifactName": "ClockLab-${version}-portable-x64.exe"
|
|
},
|
|
"linux": {
|
|
"icon": "build/icon.png",
|
|
"category": "Utility",
|
|
"artifactName": "ClockLab-${version}-${arch}.${ext}",
|
|
"target": [
|
|
{
|
|
"target": "tar.gz",
|
|
"arch": [
|
|
"arm64"
|
|
]
|
|
},
|
|
{
|
|
"target": "AppImage",
|
|
"arch": [
|
|
"arm64"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|