2014-03-27 39 views
0

我想爲我的Achievements類中的一個值實現localStorage。所以基本上這個類所做的是從後端數據庫獲取玩家數據,並且如果玩家清除了某些任務,成就就會被解鎖。現在我剛剛1績效定義如下如何實現javascript localStorage

成就:{1:{名稱: 'First_Achievement',狀態:1}},

狀態字段行爲像我的成就的標誌。如果狀態是1,那麼成就仍然被鎖定,如果它變爲0,成就將被解鎖。

這是我的成就獲得解鎖時的骨架代碼。這個代碼塊在我的遊戲每10秒進行檢查,看是否有特定的任務被清零解鎖成就

 checkAchievements:function(){ 
     this.probsSolved = this.getTeamProbSolved(); 
     if(this.Achievements[1].status == 1 && this.probsSolved.length >=3) 
      this.triggerAchievement(1); // spawns achievement 1 on screen     
      this.Achievements[1].status = 0; 
     }, 

所以,當我運行遊戲能正常工作。 「this.Achievements [1] .status」被設置爲0,直到我下次再次開始我的遊戲。它將「this.Achievements [1] .status」設置回1,並且if循環再次運行,因爲狀態設置爲1,我不想這樣做,因爲它顯而易見,我希望我的成就只會被生成或顯示一次,不是每次運行遊戲。

那麼在這裏怎麼去一個實現localStorage?我想我需要在localStorage中存儲我的「Achievements.status」字段,以便if循環只運行一次而不是每次運行。或者還有其他方法可以實施嗎?

我嘗試以下

localStorage.setItem(this.Achievements [1] .STATUS,0);

,但它不工作

任何幫助,將不勝感激!謝謝!

+0

如果您不反對使用第三方腳本:http://www.jstorage.info/ –

回答

0

首先,我建議閱讀MDN上的localStorage文檔 - https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage。接下來,讓我們來看看您的來電:

localStorage.setItem(this.Achievements[1].status,0); 

這是說:我想你存儲的值,0,和那就是this.achievements [1] .STATUS價值的關鍵檢索。

好像是你的布爾值。所以,你主要做:

localStorage.setItem(true, 0) 

的localStorage的API預計的鍵名字符串,因此它會得到真正的是,真正的字符串值。所以它可能沒有爲你工作,但你使用的密鑰可能不是你想要的。你需要考慮一個對你有意義的關鍵名字方案。