制作游戏并尝试将一系列已完成的关卡保存到Cookie中。首次制作cookie时,这种情况非常有效,但是当您稍后再继续播放时,cookie似乎是只读的,并且不会像重新加载页面之前那样发生变化。
类似于:var completedLevels = [1,1,0,0,0,0,0];
在游戏的第一次运行中是可编辑的,但如果您关闭游戏并返回,则阵列将被锁定在之前处于的状态,即:[1,1,0,0,0,0,0]
in这种情况。
这显然不是我正在寻找的行为,所以我想知道是否有一种方法可以使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。
答案 0 :(得分:0)
在重新加载数据时,只需要从字符串转换回数组。 localStorage和cookies都使用字符串,因此我的串联隐式地从数组转换为字符串。当您关闭页面并重新打开它时,数据作为字符串被加载回来并转储到应该是数组的var中,这显然会导致问题。