【发布时间】:2014-04-04 10:17:48
【问题描述】:
制作游戏并尝试将已完成关卡的数组保存到 cookie 中。这在第一次创建 cookie 时效果很好,但是当您稍后返回继续播放时,cookie 似乎是只读的,并且不会像重新加载页面之前那样更改。
类似:var completedLevels = [1,1,0,0,0,0,0]; 在游戏的第一次运行时是可编辑的,但如果您关闭游戏并返回,则数组将锁定在之前的任何状态,即:[1,1,0,0,0,0,0] 在这种情况下。
这显然不是我真正想要的行为,所以我想知道是否有办法使 cookie 在创建时不是只读的或类似的东西。到目前为止,我的研究似乎表明 cookie 永远不会默认为只读,这让我有点怀疑,但由于我过去没有对 cookie 做太多事情,所以我很困惑!
编辑:
当你第一次玩游戏时,数组是:[0,0,0,0,...],然后用户完成第 1 级并且数组更新,所以现在是:[1,0,0,0,...],第 2 级:[1,1,0,0,...],依此类推。当一个级别完成时,该数组被放入一个 cookie:document.cookie = "completedLevels=" + this.completedArr + "; expires=Mon, 3 April 2034 20:47:11 UTC path=/";。现在假设你已经玩过第 1、2 和 4 关,所以数组看起来像这样:[1,1,0,1,...],你关闭页面,稍后再回来,期待能够玩第 3 关。当你完成那个关卡时,之前将数组更新为 [1,1,1,1,...] 的相同代码会更新代码使用的版本,但不会更新 cookie。
【问题讨论】:
-
请向我们展示您的实际代码,因为这听起来更像是您的代码有问题(尤其是因为没有只读 cookie)。您还应该知道您不能只将数组放入 cookie 中。您必须先将数组转换为字符串,因为 cookie 只是字符串。
-
游戏只有客户端/JS,还是有服务端代码?什么是设置cookie?什么是读取 cookie。 “锁定在以前的任何状态”是什么意思?显示代码,具体的。
-
客户端,更多细节见编辑
标签: javascript cookies