微信小程序篮球计分板实战:计时、暂停和撤销怎么设计 做篮球计分板时最容易被低估的是状态一致性。比分加减并不难真正容易出错的是这些场景计时正在运行时用户切到后台记录暂停后主计时和进攻计时没有一起停误点一次两分球撤销后总分恢复了但节比分和操作记录没有恢复。如果只围绕页面按钮写逻辑功能越加越难维护。更稳妥的做法是先把比赛状态、计时器和业务事件分开。## 计时显示不是状态源计分板通常需要保存以下字段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. 页面退出或比赛结束时最后状态是否已经保存。篮球计分板不是单纯的数字面板。把时间当作独立状态把暂停当作完整业务动作把撤销设计成关联状态恢复后续增加节次、犯规、球员统计和赛果保存时会更容易控制。完整的现场操作顺序可参考[篮球比赛现场计分指南]

相关新闻

最新新闻

RoMe: Row Granularity Access Memory System for Large Language Models

RoMe: Row Granularity Access Memory System for Large Language Models

RoMe 论文总结与翻译 一、主要内容总结 1. 研究背景 现代基于HBM(高带宽内存)的存储系统仍采用缓存行粒度访问,为维持该细粒度引入了bank组、伪通道(PC)等结构,导致存储控制器调度复杂度剧增、控制开销加大。而大型语言模型(LLM)的工作负载以连续数据块流(数KB至MB…

2026/8/19 14:29:56
网络通信基石:IP地址、子网掩码、网关与DNS配置与排错全指南

网络通信基石:IP地址、子网掩码、网关与DNS配置与排错全指南

这次我们来看一个网络工程师和开发者都绕不开的核心基础:IP地址、子网掩码、网关和DNS。这四大件是网络通信的基石,无论是配置服务器、排查网络故障,还是理解微服务架构中的服务发现,都离不开它们。很多人看过零散的概念&#xff…

2026/8/19 14:29:56
PromptBridge: Cross-Model Prompt Transfer for Large Language Models

PromptBridge: Cross-Model Prompt Transfer for Large Language Models

文章核心总结与翻译 一、主要内容 文章聚焦大语言模型(LLMs)切换场景下的“模型漂移(Model Drifting)”问题——为某一模型优化的提示词直接迁移到其他模型时性能显著下降,提出了训练无关的跨模型提示词迁移框架PromptBridge。该框架通过校准任务获取模型专属最优提示词…

2026/8/19 14:29:56
Securing Large Language Models (LLMs) from Prompt Injection Attacks

Securing Large Language Models (LLMs) from Prompt Injection Attacks

文章主要内容与创新点总结 一、主要内容 研究背景:大语言模型(LLMs)在实际应用中广泛部署,但指令遵循特性使其易受提示注入攻击——攻击者在良性提示中嵌入恶意指令,诱导模型偏离原定任务产生有害输出。现有防御方案(如提示过滤、运行时护栏)存在对抗性提示绕过、泛化能…

2026/8/19 14:29:56
ProEx: A Unified Framework Leveraging Large Language Model with Profile Extrapolation for Recomme...

ProEx: A Unified Framework Leveraging Large Language Model with Profile Extrapolation for Recomme...

ProEx 论文核心总结与翻译 一、主要内容总结 1. 研究背景与问题 现有基于大语言模型(LLM)的推荐系统多采用单实例用户/物品画像,但存在两大核心缺陷: 单画像难以全面捕捉用户偏好的复杂性和多面性,无法覆盖用户多样化需求; LLM 存在噪声、幻觉、流行度偏差等固有不稳定…

2026/8/19 14:29:56
基于LangChain与Gemini的AI Agent:构建Web版智能实验室助手

基于LangChain与Gemini的AI Agent:构建Web版智能实验室助手

1. 项目概述:当AI助手走进实验室 最近在实验室里,和几个同事聊起日常工作的痛点,大家不约而同地提到了那些繁琐、重复但又必须精确完成的辅助性工作:比如实验数据的初步整理、试剂库存的查询与预警、简单实验步骤的标准化文档生成…

2026/8/19 14:24:55