【问题标题】:how to implement javascript localStorage如何实现javascript本地存储
【发布时间】:2014-05-07 00:31:08
【问题描述】:

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

成就:{ 1:{name:'First_Achievement',status: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);

但它不起作用

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

【问题讨论】:

标签: javascript html impactjs


【解决方案1】:

首先,我建议阅读 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 需要一个字符串作为键名,因此它将获得字符串值 true,即 true。所以它可能确实为您工作,但您使用的密钥可能不是您想要的。您需要考虑一个对您有意义的键名方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-08
    • 2017-03-17
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多