2014-04-04 142 views
0

制作游戏并尝试将完成的数组保存到cookie。这在第一次制作cookie时效果很好,但当您稍后返回以继续播放该cookie时,该cookie看起来是只读的,不会像重新加载页面之前那样更改。使饼干不是只读

类似于:var completedLevels = [1,1,0,0,0,0,0];在游戏的第一次运行中是可编辑的,但如果您关闭游戏并返回,则数组会被锁定在之前的任何状态,即:在此情况下为[1,1,0,0,0,0,0]

这显然不是真正的我正在寻找的行为,所以我想知道是否有办法让cookie不能只读创建或类似的东西。到目前为止,我的研究似乎表明,cookies从来就不是只读的,这使得我有点怀疑,但由于过去我没有用cookie做过多,所以我很困惑!

编辑: 当你第一次玩游戏的数组是:[1,0,0,0,...],2级:[1,1,0,0,...][0,0,0,0,...]的,那么它现在的用户完成1级和阵列更新。当一个级别完成时,该数组放入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。

+2

请向我们展示您的实际代码,因为这听起来更像您的代码有问题(特别是因为没有只读cookie)。你也应该知道你不能只把一个数组放入cookie中。您必须首先将数组转换为字符串,因为Cookie只是字符串。 – jfriend00

+0

仅游戏客户端/ JS,还是有服务器代码?什么是设置cookie?什么是读取cookie。 “什么意思是”锁定在之前的状态?“显示代码,获取具体信息。 – JAAulde

+0

客户端,请参阅编辑了解更多详情 – dlkulp

回答

0

只需要在数据重新加载时从字符串转换回数组。 localStorage和cookie都使用字符串,所以我的连接隐式地从一个数组转换为一个字符串。当你关闭页面并重新打开它时,数据被作为一个字符串加载回来,并被转储到应该是一个数组的var中,这显然会导致问题。