微信小程序篮球计分板实战:计时、暂停和撤销怎么设计
做篮球计分板时最容易被低估的是状态一致性。比分加减并不难真正容易出错的是这些场景计时正在运行时用户切到后台记录暂停后主计时和进攻计时没有一起停误点一次两分球撤销后总分恢复了但节比分和操作记录没有恢复。如果只围绕页面按钮写逻辑功能越加越难维护。更稳妥的做法是先把比赛状态、计时器和业务事件分开。## 计时显示不是状态源计分板通常需要保存以下字段jsconst matchState {timerMode: down, // down倒计时up正计时clockSeconds: 600,clockRunning: false,period: 1,homeScore: 0,awayScore: 0,events: []}页面上的 10:00 只是 clockSeconds 的格式化结果不应成为业务状态。切换正计时和倒计时时也只需要重置秒数jsfunction resetClock(mode, periodMinutes) {return mode down ? periodMinutes * 60 : 0}function stepClock(mode, seconds) {return mode down? Math.max(0, seconds - 1): seconds 1}这样显示格式、节次设置和比赛结果保存都围绕同一份秒数工作不必从文本中反向解析时间。## 不要假设 setInterval 永远准时小程序进入后台后定时器可能暂停或延迟。如果重新显示页面时继续沿用离开前的数值比赛时间就会少走一段。处理方法是页面隐藏时记下时间戳和运行状态并停止定时器页面恢复时计算实际经过的秒数。jsonHide() {this.hiddenAt Date.now()this.clockWasRunning this.data.clockRunningthis.stopClock()},onShow() {if (!this.hiddenAt || !this.clockWasRunning) returnconst elapsed Math.floor((Date.now() - this.hiddenAt) / 1000)const next this.data.timerMode down? Math.max(0, this.data.clockSeconds - elapsed): this.data.clockSeconds elapsedthis.setData({ clockSeconds: next })this.startClock()}倒计时恢复到零时不应再次启动定时器而应直接进入本节结束处理。进攻计时也要使用同样的恢复规则并且不能越过主计时的结束点。## 暂停不是弹出一个对话框一次球队暂停至少包含四个动作- 增加该队暂停次数- 写入一条带节次和时间的比赛事件- 停止主计时- 停止进攻计时。这四步应放在同一个业务入口里。只显示“已暂停”的弹窗却忘记停止其中一个计时器现场记录很快就会对不上。jsfunction handleTeamTimeout(side) {saveUndoSnapshot(暂停)increaseTimeoutCount(side)appendEvent({period: state.period,time: getEventTime(),team: side,action: 暂停})stopMainClock()stopShotClock()}是否继续读秒、是否播放暂停音乐可以交给后续交互确认。比赛状态先停稳再处理声音和提示业务逻辑会清楚很多。## 撤销要恢复一组关联状态误点得分时只把总分减回去并不够。一次得分可能同时改变总分、单节比分、球员得分和最近操作。简单可靠的方式是在执行可撤销操作前保存快照jsfunction pushUndoSnapshot(label) {undoStack.push({label,data: {homeScore: state.homeScore,awayScore: state.awayScore,periodScores: clone(state.periodScores),playerStats: clone(state.playerStats),events: clone(state.events)}})undoStack undoStack.slice(-30)}function undoLastAction() {const snapshot undoStack.pop()if (!snapshot) returnrestoreState(snapshot.data)saveMatchRecord()}快照只保存会被本次操作修改的字段。实时比赛时间通常不跟随一次比分撤销回退否则用户撤销两分球时计时也可能跳回几秒前。如果后续需要多人协同记录或云端审计可以把快照升级为命令模式每次操作保存动作类型、前值、后值、操作者和时间再为每类动作编写对应的逆操作。**操作记录要能回答“为什么变成这样”**最近操作不能只显示“主队 2”。更有用的事件结构包括js{id: event-id,period: 2,time: 03:18,team: 主队,action: #7 李明 得分 2,score: 36-31}这条记录能帮助现场人员确认三件事发生在哪一节、当时比赛时间是多少、操作后的比分是多少。出现争议时也能快速定位需要撤销或核对的动作。## 上线前至少测试这些场景1. 正计时和倒计时分别运行、暂停、恢复、归零。2. 计时过程中切后台十秒再返回前台。3. 记录球队暂停后主计时和进攻计时是否同时停止。4. 连续记录两分、犯规和换人再逐次撤销。5. 撤销栈为空时是否给出明确提示。6. 一节结束时是否阻止重复蜂鸣和重复结算。7. 页面退出或比赛结束时最后状态是否已经保存。篮球计分板不是单纯的数字面板。把时间当作独立状态把暂停当作完整业务动作把撤销设计成关联状态恢复后续增加节次、犯规、球员统计和赛果保存时会更容易控制。完整的现场操作顺序可参考[篮球比赛现场计分指南]

相关新闻

106、洞察驱动的实战标题——空间降噪的“保边困境“——NLM/Bilateral/Guided Filter在纹理区与平坦区的表现差异及调参心法

106、洞察驱动的实战标题——空间降噪的“保边困境“——NLM/Bilateral/Guided Filter在纹理区与平坦区的表现差异及调参心法

106、洞察驱动的实战标题——空间降噪的"保边困境"——NLM/Bilateral/Guided Filter在纹理区与平坦区的表现差异及调参心法 上周三晚上十一点,我盯着屏幕上那台量产车的前视摄像头画面,眉头拧成了麻花。客户报了个"鬼影"问题——夜间城市道路,路牌边缘…

2026/8/20 13:53:12 阅读更多 →
107、洞察驱动的实战标题——时域降噪的“鬼影博弈“——运动检测阈值高一点还是低一点?从拖影与闪烁的平衡到自适应策略

107、洞察驱动的实战标题——时域降噪的“鬼影博弈“——运动检测阈值高一点还是低一点?从拖影与闪烁的平衡到自适应策略

107、洞察驱动的实战标题——时域降噪的"鬼影博弈"——运动检测阈值高一点还是低一点?从拖影与闪烁的平衡到自适应策略 去年秋天,我在某款旗舰手机项目的夜景模式调试现场,被一个看似简单的问题卡了整整两周。问题描述只有一句话:暗光下人物轻微晃动时,脸上出现…

2026/8/20 14:11:44 阅读更多 →
树莓派安全镜像构建指南:从系统加固到自动化部署

树莓派安全镜像构建指南:从系统加固到自动化部署

1. 项目概述:为什么我们需要一个“安全”的树莓派镜像?如果你玩过树莓派,大概率经历过这样的场景:兴致勃勃地买来一块板子,从官网下载了最新的 Raspberry Pi OS,刷入 SD 卡,开机,然后…

2026/8/19 13:48:58 阅读更多 →

最新新闻

maven指定模块快速打包idea插件Quick Maven Package

maven指定模块快速打包idea插件Quick Maven Package

问题背景描述 在实际开发项目中,我们的maven项目结构可能不是单一maven项目结构,项目一般会用parent方式将各个项目进行规范; 随着组件的数量增加,就会引入一个问题:我们只想打包某一个修改后的组件A时就变得很不方便&…

2026/8/20 15:53:53 阅读更多 →
【TDengine】 如何使用 `taosBenchmark`(原 taosdemo)进行性能压测?

【TDengine】 如何使用 `taosBenchmark`(原 taosdemo)进行性能压测?

TDengine 性能压测实战:taosBenchmark 全景指南与工业 IoT 场景深度调优 引言:问题定义与解析范围 本文将深入解答一个 TDengine 用户在系统上线前必须掌握的核心技能:“如何使用 taosBenchmark(原 taosdemo)进行性能压测?” 这个问题的答案,直接决定了你能否对 TDeng…

2026/8/20 15:53:53 阅读更多 →
【TDengine】如何查看数据库、表的元信息(schema)?

【TDengine】如何查看数据库、表的元信息(schema)?

TDengine 元信息查询全指南:从 Schema 探查到分布式元数据架构解析 引言:问题定义与解析范围 本文将深入解答一个 TDengine 初学者和运维工程师日常工作中最频繁遇到的基础问题:“如何查看数据库、表的元信息(schema)?” 这个问题看似简单,却是理解 TDengine 独特数据…

2026/8/20 15:53:53 阅读更多 →
告别训练黑盒!用 mmsegmentation 可视化工具实时掌控模型状态

告别训练黑盒!用 mmsegmentation 可视化工具实时掌控模型状态

告别训练黑盒!用 mmsegmentation 可视化工具实时掌控模型状态 【免费下载链接】mmsegmentation OpenMMLab Semantic Segmentation Toolbox and Benchmark. 项目地址: https://gitcode.com/GitHub_Trending/mm/mmsegmentation 训练语义分割模型时,…

2026/8/20 15:53:53 阅读更多 →
【TDengine】TDengine 是否支持数据更新和删除?限制条件是什么?

【TDengine】TDengine 是否支持数据更新和删除?限制条件是什么?

TDengine 数据更新与删除机制深度解析:能力边界、限制条件与生产实践 引言:问题定义与解析范围 本文将深入解答一个 TDengine 初学者和迁移用户最关心的核心问题:“TDengine 是否支持数据更新和删除?限制条件是什么?” 这个问题看似简单,却直接触及了 TDengine 作为一款…

2026/8/20 15:53:53 阅读更多 →
Minecraft三层随机生存挑战:数据包实现与极限资源管理

Minecraft三层随机生存挑战:数据包实现与极限资源管理

1. 这个挑战到底在玩什么?先拆解核心规则看到“每天随机生成三层的板块”这个描述,很多《我的世界》玩家第一反应可能是“这不就是超平坦世界吗?”。但仔细看,这个挑战的规则要更具体,也更考验玩家的生存策略和规划能力…

2026/8/20 15:52:52 阅读更多 →

日新闻

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新引“变砖”危机2026年7月7日,Framework向用户quantum5发送邮件,建议其安装BIOS 3.20更新。然而,更新后电脑出现严重问题,屏幕显示三角形和随机像素图案,风扇狂转,系统完全挂起。qua…

2026/8/20 0:00:46 阅读更多 →
2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!据艾瑞咨询发布的《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,同比增长18.7%。中国互联网络信息中心数据显示,截至2025年底…

2026/8/20 0:00:46 阅读更多 →
2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?据艾瑞咨询《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,其中高端定制网站服务占比突破42%。更值得关注的是,91%的规模以上企业…

2026/8/20 0:00:46 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/20 6:11:08 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/19 11:55:13 阅读更多 →