Libgdx 根据动作改变纹理

Libgdx 根据动作改变纹理,libgdx,preferences,Libgdx,Preferences,因此,当用户购买时,他们会得到一个新的纹理,它将取代原来的纹理。我有点勉强。但我也希望用户能够替换回原来的一个,如果希望这样做 此时,用户进行购买,纹理变化良好。但当我存储偏好的变化时,它会使其永久化。所以当我试着按下按钮切换到原来的石头,它只是简单地叫“setStone(…)”,什么都没有发生 有谁知道我哪里出了错? 另外,代码不是直接复制的,只是在重要部分剪切 ObjectMap<Integer, Texture> screenMap = new ObjectMap<Int

因此,当用户购买时,他们会得到一个新的纹理,它将取代原来的纹理。我有点勉强。但我也希望用户能够替换回原来的一个,如果希望这样做

此时,用户进行购买,纹理变化良好。但当我存储偏好的变化时,它会使其永久化。所以当我试着按下按钮切换到原来的石头,它只是简单地叫“setStone(…)”,什么都没有发生

有谁知道我哪里出了错? 另外,代码不是直接复制的,只是在重要部分剪切

ObjectMap<Integer, Texture> screenMap = new ObjectMap<Integer, Texture>();
ObjectMap<String, Boolean> mTexturesStatus = new ObjectMap<String, Boolean>();

public void setStone1() {
    stoneImage = new Image(screenMap.get(0));

}

public void setStone(int screenId) {
    stoneImage = new Image(screenMap.get(screenId));

  }


screenMap.put(0, sdStone);
    screenMap.put(1, stone_3);


mTexturesStatus.put("stone1", stone1);
    mTexturesStatus.put("stone2", stone2);

btnArrow.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeEvent event, Actor actor) {


                    game.setScreen(0);


                    //Saves the entered text.

                    Preferences prefs = Gdx.app.getPreferences("preferences");
                    prefs.putString("textField", textField.getText());
                    prefs.putString("textArea", textArea.getText());
                    prefs.getBoolean("stoneOne");
                    prefs.getBoolean("stoneTwo");
                    prefs.flush(); 

                }


            });
    //screenMap.put(prefs.getInteger("stoneOne", 0), sdStone);
    //screenMap.put(prefs.getInteger("stoneTwo", 1), stone_3);
            setStone1();
            if(stone1 = true) {
                setStone(0);
                prefs.putBoolean("stoneOne", true);

            }
            if(stone2 = true) {
                setStone(1);
                prefs.putBoolean("stoneTwo", true);
            }



}
ObjectMap screenMap=newobjectmap();
ObjectMap mTexturesStatus=新ObjectMap();
公共无效setStone1(){
stoneImage=新图像(screenMap.get(0));
}
公共无效设置音(int屏幕ID){
stoneImage=新图像(screenMap.get(screenId));
}
屏幕图。放置(0,sdStone);
屏幕图。放置(1,stone_3);
mtexturessstatus.put(“stone1”,stone1);
mtexturessstatus.put(“stone2”,stone2);
addListener(新的ChangeListener(){
@凌驾
公共无效已更改(ChangeEvent事件、参与者){
游戏设置屏幕(0);
//保存输入的文本。
Preferences prefs=Gdx.app.getPreferences(“首选项”);
prefs.putString(“textField”,textField.getText());
prefs.putString(“textArea”,textArea.getText());
prefs.getBoolean(“stoneOne”);
prefs.getBoolean(“stoneTwo”);
prefs.flush();
}
});
//screenMap.put(prefs.getInteger(“stoneOne”,0),sdStone);
//屏幕图.put(prefs.getInteger(“stoneTwo”,1),stone_3);
setStone1();
如果(1=真){
设置音调(0);
prefs.putBoolean(“stoneOne”,真);
}
if(stone2=true){
固定音调(1);
prefs.putBoolean(“stoneTwo”,true);
}
}

您的代码中有几点有点奇怪-您可以调用
prefs.getBoolean(“stoneOne”),但您不使用它执行任何操作。另外,您的
if(stone1=true)
应该是
if(stone1==true)
,或者最好是
if(stone1)
。也许当你把你的一块石头放在地图上的时候,你也应该考虑把其他的东西设置成假以避免混淆,是的,我已经改变为(石头1)了。我看到了那个错误。我不明白的是我应该如何处理prefs.getBoolean(“stoneOne”)?我也需要“放”它吗?因为我试过了,但没有达到预期效果。你到底想用这个值做什么
getBoolean()
只是告诉您首选项中的关联值是真是假我想存储布尔值是真还是假。因为当用户进行购买时,布尔值变为真,并且为了防止用户在重新启动应用程序时购买被浪费,我想存储该购买。