Libgdx 根据动作改变纹理
因此,当用户购买时,他们会得到一个新的纹理,它将取代原来的纹理。我有点勉强。但我也希望用户能够替换回原来的一个,如果希望这样做 此时,用户进行购买,纹理变化良好。但当我存储偏好的变化时,它会使其永久化。所以当我试着按下按钮切换到原来的石头,它只是简单地叫“setStone(…)”,什么都没有发生 有谁知道我哪里出了错? 另外,代码不是直接复制的,只是在重要部分剪切Libgdx 根据动作改变纹理,libgdx,preferences,Libgdx,Preferences,因此,当用户购买时,他们会得到一个新的纹理,它将取代原来的纹理。我有点勉强。但我也希望用户能够替换回原来的一个,如果希望这样做 此时,用户进行购买,纹理变化良好。但当我存储偏好的变化时,它会使其永久化。所以当我试着按下按钮切换到原来的石头,它只是简单地叫“setStone(…)”,什么都没有发生 有谁知道我哪里出了错? 另外,代码不是直接复制的,只是在重要部分剪切 ObjectMap<Integer, Texture> screenMap = new ObjectMap<Int
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()
只是告诉您首选项中的关联值是真是假我想存储布尔值是真还是假。因为当用户进行购买时,布尔值变为真,并且为了防止用户在重新启动应用程序时购买被浪费,我想存储该购买。