2014-03-27 5 views
0

내 Achievements 클래스에서 내 값 중 하나에 대해 localStorage를 구현하고 싶습니다. 따라서 기본적으로이 클래스는 백엔드 데이터베이스에서 플레이어 데이터를 가져오고 플레이어가 특정 작업을 지우면 업적이 해제됩니다. 지금 나는javascript localStorage 구현 방법

성과를 다음과 같이 단지 한 업적 정의가 {1 : {이름 : 'First_Achievement', 상태 : 1}}

내 성과에 대한 플래그와 같은 상태 필드 역할을

. 상태가 1이면 업적은 계속 잠기고 0이되면 업적이 해제됩니다.

성취도가 잠금 해제 된 경우의 해골 코드입니다. 이 코드 블록은 특정 작업은 내가 게임을 실행할 때

 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; 
     }, 

그래서이 제대로 작동 성과를 잠금을 해제하려면 해제되어 있는지 내 게임 10 초마다 체크한다. 다음 번에 게임을 다시 시작할 때까지 "this.Achievements [1] .status"가 0으로 설정됩니다. 그것은 "this.Achievements [1] .status"를 1로 설정하고 if 루프는 상태가 1로 다시 설정되면 다시 실행됩니다. 왜냐하면 분명히 내 성취가 생성되거나 한 번만 표시되기를 원하기 때문입니다. 내가 게임을 할 때마다 그런 것은 아닙니다.

그럼 localStorage를 구현하려면 어떻게해야합니까? 나는 "Achievements.status"필드를 localStorage에 저장하여 if 루프가 매번 실행되는 것이 아니라 한 번만 실행되도록해야한다고 가정합니다. 아니면 이것을 구현할 수있는 다른 방법이 있습니까?

제가

다음

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

있지만

도움이 작동하지 않습니다 주시면 감사하겠습니다! 감사!

+0

타사 스크립트를 사용하는 것에 반대하지 않는 경우 : http://www.jstorage.info/ –

답변

0

먼저 localStorage의 MDN - https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage에서 설명서를 읽는 것이 좋습니다. 난 당신이 값, 0을 저장할 및 this.achievements [1] .STATUS의 값을 수있는 키를 검색 :

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

이 말한다 : 다음의가 통화를 살펴 보자.

인 것처럼 보입니다.

localStorage.setItem(true, 0) 

로컬 스토리지의 API가 키 이름에 대한 문자열을 기대하고, 그래서 사실, 어떤 사실의 문자열 값을 얻을 것이다 : 그래서 당신은 기본적으로했다. 그래서 일을했지만 어쩌면 원하는 것이 아닌 키를 사용했습니다. 당신은 당신에게 의미있는 키 이름 체계를 생각할 필요가 있습니다.