【发布时间】:2014-01-03 15:51:15
【问题描述】:
这是this的后续问题
我开始使用 localStorage 功能, 并且不确定它是否按预期工作。
我想覆盖 JSON 文件中的布尔值。
玩家在一个阶段点击出口,然后触发下一个阶段的加载, 但我也希望它保存阶段已完成的事实。
这是我的 JSON 数组,默认情况下所有地牢都不完整:
var dungeon_prog = {
"dungeon0_prog" : {
"complete" : true
},
"dungeon1_prog" : {
"complete" : false
},
"dungeon2_prog" : {
"complete" : false
}
};
然后我将其设置为本地存储:
localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog));
var dungeon_prog_obj = JSON.parse(localStorage.dungeon_prog);
我希望它在玩家到达地牢 1 的出口时覆盖 dungeon1_prog “完成”false 到 true。
我该怎么做? 并且默认的“假”语句实际上是否保存在 localStorage 中? 谢谢。
【问题讨论】:
-
不能只更改解析后的 JSON 中的值并重新字符串化吗?
-
dungeon_prog_obj.dungeon1_prog.complete = true他们再次执行setItem():localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog_obj)); -
@Manishearth 感谢您的评论。我不确定那是什么。
-
@RaulRene 谢谢。我刚刚试了一下,和我想要的很接近。完成dungeon1后似乎显示“true”,但重新加载后,它恢复为“false”。我希望它保持“真实”,除非我按下新的游戏按钮或其他东西。
-
顺便说一下,我建议您使用抽象来处理 localStorage。像这样:github.com/orangecoding/jsutils/blob/master/storage.js
标签: javascript json html local-storage craftyjs