2016-06-21 39 views
0

//編輯改變狀態後保存健康,有趣,硬幣

我想在切換狀態和返回狀態後保存健康,硬幣,樂趣值。

我創建的遊戲對象/數組:

game.yourGameData = {}; 
game.yourGameData.health = 100; 
game.yourGameData.coin = 100; 
game.yourGameData.fun = 100; 

下一個I定義的值來PARAMS寵物:

//設置健康

var health, fun, coin; 


    health = this.game.yourGameData.health; 
    fun = this.game.yourGameData.fun; 
    coin = this.game.yourGameData.coin; 

    //custom properties of the pet 
    this.pet.customParams = {health, fun, coin}; 

並且值被示出沒有錯誤。 現在我通過功能打開子博弈:

showtry: function() 
{ 
    this.game.state.start('brick_destro_game'); 
}, 

當我完成子游戲,然後切換回主狀態對健康具有價值100

切換回狀態功能:

clickOnActionExit: function() 
    { 
     this.game.state.start('GameState'); 
    }, 

什麼我想看看: 寵物盯着100身體,接下來他什麼都不吃。健康被降到70. 我將狀態切換到子游戲並進行遊戲。我完成比賽並回到主狀態。 寵物should'ev 70健康,但其重設爲100

All project code here

game

+0

你在哪裏設置'yourGameData'對象?如果它在GameState狀態下設置,它會在你每次啓動時重置 –

+0

檢查文件:遊戲我只是將其添加到帖子 – Tomasz

+0

好的,你有'this.pet' ...但是它有定義嗎?在國家的啓動方法內?這是'遊戲'還是其他什麼? –

回答

1

就像你提到你可以保留的數據進行帶外(全局)或方法,我比如使用我覺得比全局變量更好的方法是將一個新對象附加到'遊戲'上以保存您的數據。這將持續到處遊戲。

例如

this.game.yourGameData = {}; 
this.game.yourGameData.health = 70; 
this.game.yourGameData.cons = 100; 
+0

我嘗試你的方法,但仍然無法正常工作。每次都從100開始。 – Tomasz

1

我覺得你的問題是,這些價值正在由國家每次執行創建功能,你應該實現類似下面的時間重置:

var state = { 
    create: function() { 
    if (!game.pet) { 
     var health, fun, coin; 

     health = this.game.yourGameData.health; 
     fun = this.game.yourGameData.fun; 
     coin = this.game.yourGameData.coin; 

     //custom properties of the pet 
     game.pet={customParams : {health, fun, coin}}; 
    } 
    }, 
    update: {...} 
} 

確保在寵物「死亡」時移除屬性game.pet,以便在重新開始時重置值。

+0

我嘗試這個,但現在我有錯誤信息: 'main.js:84未捕獲的類型錯誤:無法設置未定義的屬性'customParams' 'main。JS:199遺漏的類型錯誤:無法讀取undefined' 代碼更新的特性「健康」在github上 – Tomasz

+0

固定的,問題是,寵物不存在 –

+0

我有其他錯誤:d 'main.js:183遺漏的類型錯誤:不能讀取未定義的refreshStats屬性'健康' 'main.js:201未捕獲的TypeError:無法讀取未定義的屬性'健康' 這不能讀取健康和其他; / – Tomasz