如何实现javascript localStorage

时间:2014-03-27 19:45:40

标签: javascript html5 impactjs

我想在我的Achievements类中为我的一个值实现localStorage。所以这个类的基本功能是从后端数据库中获取玩家数据,如果玩家清除某些任务,则成就会被解锁。现在我只有1个成就定义如下

  

成就:{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呢?我想我需要存储我的" Achievements.status" localStorage中的字段,以便if循环只运行一次而不是每次运行。或者还有其他方法可以实现吗?

我尝试了以下

  

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

但它不起作用

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

首先,我建议您阅读MDN上localStorage的文档 - https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage。接下来,让我们来看看你的电话:

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

这说:我希望你存储一个值0,并通过this.achieve [1] .status的值来检索它。

似乎是你的布尔值。所以你基本上做了:

localStorage.setItem(true, 0)

localStorage API需要一个字符串作为键名,因此它将获得字符串值true,即true。所以它可能 为你工作,但你使用的键可能不是你想要的。您需要考虑一个对您有意义的关键名称方案。