2016-01-28 1 views
1

J'ai recherché autour et n'ai rien trouvé lié à ce que j'essaye d'accomplir.Libgdx: Différents profils de préférences

Pour expliquer aussi simple que possible. Mon application stocke divers nombres de valeurs, agissant en tant que paramètres pour l'utilisateur fondamentalement. Maintenant ce que je veux, c'est que l'utilisateur ait la possibilité de basculer entre différents fichiers de préférences. Comme différents profils. Ainsi, sur un clic d'un bouton toutes les instances de préférences via l'application va commencer la lecture d'un fichier différent avec des valeurs différentes, par exemple:

main.preferences = Gdx.app.getPreferences("prefs_2"); 

où le premier profil serait « prefs_1 » au lieu qui est chargé par défaut lorsque l'application démarre Je ne sais pas si juste changer le fichier de préférences comme indiqué ci-dessus fonctionnerait du tout. Mais j'espère que cela donne une idée de ce que je pense.

Et lorsque vous cliquez sur ce bouton pour modifier le fichier de préférence, l'application va lire que les valeurs de fichiers à travers toutes les classes dans l'application jusqu'à ce qu'il soit redémarré où il va revenir au fichier par défaut:

public class Main extends Game { 
public SpriteBatch batch; 
public ShapeRenderer renderer; 
private Assets assets; 

//Local Preferences 
public Preferences preferences; 

public Main(utilsInterface utils){ 
    this.utils = utils; 
} 
@Override 
public void create() { 
    batch = new SpriteBatch(); 
    renderer = new ShapeRenderer(); 
    assets = new Assets(); 
    preferences = Gdx.app.getPreferences("prefs_1"); 

    setScreen(new SplashScreen(this)); 
} 
@Override 
public void render() { 
    super.render(); 

} 
@Override 
public void resize(int width, int height) { 
    super.resize(width, height); 
} 

@Override 
public void dispose() { 
    super.dispose(); 
    assets.dispose(); 
    batch.dispose(); 
    renderer.dispose(); 
} 
@Override 
public void pause() { 
    // TODO Auto-generated method stub 
    super.pause(); 
    // Logs 'app deactivate' App Event. 
    // AppEventsLogger.deactivateApp(this); 
} 
@Override 
public void resume() { 
    // TODO Auto-generated method stub 
    super.resume(); 
    //Assets.manager.finishLoading(); 
    // Logs 'install' and 'app activate' App Events. 
} 

}

NOTE * J'utilise la même instance de Préférences de la classe principale dans toute l'application.

Répondre

1

Oui, cela fonctionnera.

Si vous utilisez un fichier de paramètres différent, il utilisera les paramètres de ce fichier. Assurez-vous simplement d'avoir des valeurs par défaut pour tous les paramètres de sorte que si un nouveau fichier est créé (lorsque vous ouvrez un fichier qui n'existe pas, écrivez-le et videz-le), vous pouvez toujours l'utiliser sans tous les paramètres écrits dessus.