最近我一直在编写一个点击器游戏,我的代码遇到了一个问题。问题是,当游戏被保存(每五分钟有一个自动保存功能),并重新加载游戏时,它应该节省您购买的硬币和升级的数量。但是,它不会保存,Firefox会显示一个"This page is slowing your browser“。给我的信息。我尝试使用Chrome,但收到页面无响应消息。
我使用本地存储将数据存储到用户的计算机上。但是,由于没有向控制台抛出错误,所以我不能确切地确定可能会发生什么。有人知道怎么解决这个问题吗?
下面是save.js文件:
const local = window.localStorage;
class Save {
constructor () {
this._last_props = {"total-coins":0,"total-achi":0,"lifeclicks":0,"lifecoins":0,"lifeautoclicks":0};
}
__reset_everything () {
this.populate();
this.__init_lifetime();
this.load();
}
__init_lifetime () {
local.setItem("lifeclicks","0");
local.setItem("lifecoins","0");
local.setItem("lifeautoclicks","0");
}
populate () {
local.setItem("total-coins","0");
local.setItem("achievements","");
local.setItem("bought","");
local.setItem("pastry-level","0");
local.setItem("cps","0");
local.setItem("mcm","1");
}
load () {
player_coins = Number(local.getItem("total-coins"));
this._last_props["total-coins"] = player_coins;
cps = Number(local.getItem("cps"));
this._last_props["cps"] = cps;
mcm = Number(local.getItem("mcm"));
this._last_props["mcm"] = mcm;
lifetimeclicks = Number(local.getItem("lifeclicks"));
this._last_props["lifeclicks"] = lifetimeclicks;
lifetimecoins = Number(local.getItem("lifecoins"));
this._last_props["lifecoins"] = lifetimecoins;
lifeautoclicks = Number(local.getItem("lifeautoclicks"));
this._last_props["lifeautoclicks"] = lifeautoclicks;
const achi_names = local.getItem("achievements").split("|");
if (achi_names[0].length > 0) {
achievementManager._load_achi(achi_names);
}
this._last_props["total-achi"] = achievementManager._completed_achievements.length;
}
save () {
if (player_coins !== this._last_props["total-coins"]) {
this._last_props["total-coins"] = player_coins;
local.setItem("total-coins",player_coins.toString());
}
if (lifetimeclicks !== this._last_props["lifeclicks"]) {
this._last_props["lifeclicks"] = lifetimeclicks;
local.setItem("lifeclicks",lifetimeclicks.toString());
}
if (lifetimecoins !== this._last_props["lifecoins"]) {
this._last_props["lifecoins"] = lifetimecoins;
local.setItem("lifecoins",lifetimecoins.toString());
}
if (lifeautoclicks !== this._last_props["lifeautoclicks"]) {
this._last_props["lifeautoclicks"] = lifeautoclicks;
local.setItem("lifeautoclicks",lifeautoclicks.toString());
}
if (cps !== this._last_props["cps"]) {
this._last_props["cps"] = cps;
local.setItem("cps",cps.toString());
}
if (mcm !== this._last_props["mcm"]) {
this._last_props["mcm"] = mcm;
local.setItem("mcm",mcm.toString());
}
const al = achievementManager._completed_achievements;
if (al.length !== this._last_props["total-achi"]) {
this._last_props["total-achi"] = al.length;
let cln = [];
for (let i = 0; i < al.length; i ++) {
cln.push(al[i][1]);
}
local.setItem("achievements",cln.join("|"));
}
}
}
const save = new Save();
if (local.getItem("total-coins") === null && false) {
save.populate();
save.__init_lifetime();
} else {
save.load();
}
function savegame () {
save.save();
document.getElementById("auto-save-icon").className = "";
execAfterDelay(function(){document.getElementById("auto-save-icon").className="auto-save-icon-class"});
}
let repeat_save_id = self.setInterval(savegame,600000);
function game_full_reset () {
switch_tab(0);
save.__reset_everything();
}
发布于 2021-06-17 01:44:58
Clement Cartier在一条评论中修复了这个问题,告诉我save()是在无限循环中调用的。谢谢!
https://stackoverflow.com/questions/68007212
复制相似问题