HarmonyOS应用开发实战:猫猫大作战-LazyForEach 延迟加载
·


前言
在「猫猫大作战」中,连击窗口决定了多长时间内的连续合并被视为连击。窗口太短玩家难以触发,太长则连击过于容易。
一、连击窗口
private readonly COMBO_WINDOW = 2000; // 2 秒
private updateCombo(): void {
const now = Date.now();
if (now - this.combo.lastMergeTime < this.COMBO_WINDOW) {
this.combo.count++;
this.combo.multiplier = Math.min(this.combo.count, 5);
} else {
this.combo.count = 1;
this.combo.multiplier = 1;
}
this.combo.lastMergeTime = now;
}
二、窗口设计
| 窗口长度 | 效果 | 感受 |
|---|---|---|
| 1 秒 | 极难触发 | 只在高速合并时有 |
| 2 秒(当前) | 适中 | 正常操作可触发 |
| 3 秒 | 容易 | 连击常态化 |
| 5 秒 | 极易 | 连击失去奖励感 |
三、UI 反馈
// 连击窗口倒计时显示
@State comboProgress: number = 1.0;
startComboTimer(): void {
const interval = setInterval(() => {
const elapsed = Date.now() - this.combo.lastMergeTime;
this.comboProgress = Math.max(0, 1 - elapsed / 2000);
if (this.comboProgress <= 0) {
clearInterval(interval);
this.comboProgress = 0;
}
}, 100);
}
四、重置逻辑
// 超时重置
private clearComboIfExpired(): void {
if (Date.now() - this.combo.lastMergeTime > this.COMBO_WINDOW) {
this.combo = { count: 0, multiplier: 1, lastMergeTime: Date.now() };
}
}
// 在游戏循环中周期检查
setInterval(() => this.clearComboIfExpired(), 100);
五、最佳实践
- 窗口 2 秒:平衡难度和收益
- UI 倒计时:让玩家感知窗口还剩多少时间
- 超时重置:到期自动重置计数器
总结
连击窗口控制合并的有效时间范围,2 秒窗口在难度和收益间取得平衡。核心要点:COMBO_WINDOW = 2000、 Date.now() 时间差计算、 超时自动重置。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
更多推荐

所有评论(0)