2014-04-04 86 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中,這顯然會導致問題。