2015-04-11 1 views
0

Hé J'ai des problèmes pour obtenir les informations d'un fichier de préférences dans libgdx. Je mets une carte avec quelques coordonnées pour que je puisse positionner certaines choses, mais quand j'obtiens la carte du fichier des préférences (qui récupère le fichier entier, pas seulement la carte que je mets) et je ne peux pas lire les coordonnées Je mets dedans.
Je peux obtenir les clés de la carte sans problème, mais quand j'essaie d'accéder à la valeur de la carte, j'obtiens une erreur d'exécution java.lang.String ne peut pas être castée. J'ai essayé différentes valeurs comme Vector2, et le flotteur [] mais je reçois la même erreurMettez et obtenez une carte à partir des préférences de Libgdx

Heres mon code:

public class SetSettings { 
private Actor actor; 
private Actor hit; 
private Sprite sprite; 
private Sprite sprite2; 
private Rectangle rect; 
private boolean customHit = false; 
private ShapeRenderer render = new ShapeRenderer(); 
Array<Actor> actors = GameScreen.buttons.stage.getActors(); 

public SetSettings() { 
    setOriginal(); 
    setCustom(); 
    rect = new Rectangle(); 
} 

public void setOriginal() { 
    learnGame.ass.settings.get().clear(); 
    float height = Gdx.graphics.getHeight(); 
    float width = Gdx.graphics.getWidth(); 
    // ui settings 
    java.util.Map<String, Coords> map = new HashMap<String, Coords>(); 
    map.put("hpBar", new Coords(width - (learnGame.ass.hpBar.getWidth() * 1.02f), height - (height * .076f))); 
    map.put("hpBase", new Coords(learnGame.ass.hpBar.getX(), learnGame.ass.hpBar.getY())); 

    for (Entry<String, Coords> key : map.entrySet()) 
     System.out.println(key.getValue().x); // works fine here 

} 

public void setCustom() { 
    java.util.Map<String, ?> amap = learnGame.ass.settings.get(); 
    for (Entry<String, ?> key : amap.entrySet()) { 
     if (key.getValue() instanceof Coords) { 
      Coords coords = (Coords) key.getValue(); 
      float x_value = coords.x; 
      float y_value = coords.y; 
      System.out.println("6" + key.getKey()); 
      System.out.println("" + x_value);// <-----------error here -- java.lang.String cannot be cast to anything.. 

    } 

} 

public class Coords { 
    float x; 
    float y; 

    public Coords(float x, float y) { 
     this.x = x; 
     this.y = y; 
    } 
} 

}

+0

Pouvez-vous envoyer le message d'erreur complet exact? – m0skit0

+0

utilisez-vous les préférences [libgdx preferences] (https://github.com/libgdx/libgdx/wiki/Preferences)? ou vous avez implémenté votre propre stockage? – harshtuna

Répondre

0

Vérifiez l'API doc - libgdx ne supporte pas un tableau ou collection ou objets (autre que String) dans libgdx preferences. Si vous avez l'intention d'utiliser exactement le format libgdx, pensez à aplatir votre structure complexe en un tableau associé de chaînes ou de types primitifs.

preferences.putFloat("hpBar_x", 123f); 
preferences.putFloat("hpBar_y", 456f); 
+0

Dang bien, j'avais juste pensé que je pourrais mettre dans une carte avec tout ce que je voulais:/ok bien je suppose que je vais devoir faire ça, merci! – blockay