You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何仅点击时触发setInterval?宝可梦放置游戏定时器失效问题

宝可梦放置类RPG自动点击定时器异常修复方案

问题根因

你代码里的定时器没有按预期生效,核心是三个逻辑问题:

  • 定时器创建逻辑放在了所有判断分支外面,无论购买是否成功都会新建定时器,未购买成功时autoclick值为0,调用findPokeballs(0)自然不会产生收益,会让你误以为定时器没启动
  • 多次点击购买按钮会生成大量并行定时器,后续会导致自动点击速率异常加快
  • setInterval的回调函数声明了多余的buyStarter入参,存在作用域变量污染的风险

修复后代码

var starterCost = 250;
var starter = 0;
var autoclick = 0;
var count = 0; // 若你全局已定义count变量可删除该行
var autoClickTimer = null; // 存储定时器ID,方便后续清理

function buyStarter() {
  if (count >= starterCost && starter == 0) {
    autoclick = 1;
    starter = 1;
    count = count - starterCost;
    document.getElementById("starterCost").innerHTML = starterCost;
    document.getElementById("starter").innerHTML = starter;
    document.getElementById("autoclick").innerHTML = autoclick;
    // 仅首次购买成功时启动定时器
    autoClickTimer = setInterval(function() {
      findPokeballs(autoclick);
    }, 1000);
  } else if (starter == 1) {
    alert("you have already purchased a starter pokemon");
  } else {
    alert("You cannot purchase a starter pokemon");
  }
}

调整说明

  • 仅在用户满足购买条件、首次购买初始宝可梦成功时才创建定时器,避免无效定时器生成
  • 新增定时器ID存储变量,后续如果需要做暂停、重置功能可以直接调用clearInterval(autoClickTimer)清理定时器
  • 移除了回调函数多余的入参,避免变量冲突
  • 补充了count变量声明(如果你的代码里已经全局定义过count可以删掉这行)

内容的提问来源于stack exchange,提问作者Dan Boyden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:54:01