2014-03-27 40 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预计的键名字符串,因此它会得到真正的是,真正的字符串值。所以它可能没有为你工作,但你使用的密钥可能不是你想要的。你需要考虑一个对你有意义的关键名字方案。