使用首选项保存纹理

时间:2015-03-02 22:12:16

标签: android libgdx android-preferences object-object-mapping

所以我想要实现的是:当用户购买新项目(纹理)时,他们可以单击按钮将旧项目(纹理)替换为新项目。 我首先想到的是Objectmaps。所以我创造了这个:

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

我现在只使用两件物品来抓住它:

screenMap.put(prefs.getInteger("stoneOne", 0), sdStone);

screenMap.put(prefs.getInteger("stoneTwo", 1), stone_3);

以下是我用来改变纹理的方法:

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

}

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

  }

现在我可以弄清楚:

Preferences prefs = Gdx.app.getPreferences("preferences");
                    prefs.putString("textField", textField.getText());
                    prefs.putString("textArea", textArea.getText());
                    prefs.getInteger("stone", );
                    prefs.putInteger("stone", );
                    prefs.flush(); 

我不知道Integer会放在那里,因为你可以看到我甚至现在就把它排除在外。我尝试了screenId整数但由于它处于无效状态,因此无法访问它? P.S从不介意我得到的奇怪的名字。我从一个旧项目中获取了一些代码。

2 个答案:

答案 0 :(得分:1)

尝试以另一种方式行走。

  1. Save Texture to sdcard
  2. 将文件路径保存到首选项中。

  3. Preferences prefs = Gdx.app.getPreferences("preferences");
                            prefs.putString("texture_one_path", "/sdcard/tex1.jpeg");
                            prefs.putString("texture_two_path", "/sdcard/tex2.jpeg");
    

答案 1 :(得分:0)

谢尔盖是对的。纹理很重,很大,你可能有很多。这意味着SD卡。

偏好设置是移动设备上使用的轻量级安全配置文件。它们通常也是加密的,因此访问它们总是有成本的。它们通常用于用户设置,登录信息等。首选项的Android外推称为SharedPreferences。这是文档:http://developer.android.com/reference/android/content/SharedPreferences.html

&#34; SharedPreferences&#34;的iOS概念被称为NSUserDefaults,其页面为https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/index.html

底线:你不应该在偏好中保存很多信息。将其用于字符串,全局值,用户设置(音量级别,用户凭据,关闭gore等)。对于大型字符串数据,请使用raws。对于大型媒体,请使用SD卡。

希望有所帮助。