2016-08-02 52 views
0

我节省:如何恢复在首选项储值libgdx

static final String PREFS_NAME = "ScoreGame"; 
Preferences preferences; 

一个变量temp 输出到A类

**Preferences preferences;** 
    int tempGameScore = 0;//class B 
    int dropsGatchered = 0; 

    **in create** 


    preferences = Gdx.app.getPreferences(Drop.PREFS_NAME); 

在游戏场景中我做这个,B类

if ((raindrop.y < 0) && !(index >= 15)) { 

      iter.remove(); 
      game.tempGameScore = game.dropsGatchered; 
      game.preferences.putInteger("score", game.tempGameScore); 
      game.preferences.flush(); 
      game.dropsGatchered = 0; 

      stopGame(); 
     } 

C级 我得到的值,并绘制屏幕

@Override 
public void create() { 

    game.tempGameScore = game.preferences.getInteger("score"); 


} 



textFont.draw(game.batch, " " + game.tempGameScore, (Drop.WIDTH/2) - 55, 
        (Drop.HEIGHT/2) + 50); 

当我关闭我的速度丢失的应用程序,我希望她能恢复其可变game.tempGameScore

+0

你读过的文档? (https://github.com/libgdx/libgdx/wiki/Preferences)如前所述,您可以使用Preferences对象的“get”方法获取值(String name = prefs.getString(“name”,“No name stored “))。 – josemgu91

+0

@ josemgu91 是的,我已阅读文档。 我这样做,并得到0 创建(){ game.tempGameScore = game.preferences.getInteger( “保存”); } – upward

回答

0

您的代码和注释似乎对脱节。你为什么要做一个getInteger(“保存”),这不符合你的putInteger(“分数”)代码。

在创建(),初始化你的喜好,这是没有问题:

game.preferences = Gdx.app.getPreferences(Drop.PREFS_NAME); 

但是你的GET/PUT需要排队。它们像散列图一样工作,所以你必须使用相同的密钥。

game.tempGameScore = game.preferences.getInteger("score"); 

再后来, “拯救”:

game.preferences.putInteger("score", game.tempGameScore); 
game.preferences.flush(); 
+0

我更新的代码 看,保存在C类varible game.tempGameScore,一切都很好,如果我关闭应用程序,并在课堂上再次启动的APP C- game.tempGameScore = 0变量game.tempGameScore不保存最后得分 – upward

+0

不知道,你所有的代码片断都可能是你没有按你认为的顺序执行。也许倒退,创建一个简单的准系统应用程序,并确保你可以放/取值。你确定这个句柄是用非零值调用的吗?你打开保存文件,你做你的认沽以确保实际上是被写入的值之后,也许这是一个读的问题,等等。 –

+0

@彼得 - [R 什么是默认的文件夹中写的设置? – upward