2017-06-10 4 views
0

J'ai une classe où je charge tous mes TextureRegions. Maintenant, je veux créer un bouton TextButton dans différentes classes qui utilise le TextureRegion de mon AssetLoader. Mon flux de travail réel est:libGDX: Créer TextButton avec TextureRegion

buttonsAtlas = new TextureAtlas("images.atlas"); 
    buttonSkin = new Skin(); 
    buttonSkin.addRegions(buttonsAtlas); 

    font = new BitmapFont(); 

    stage = new Stage(new FitViewport(800, 400, camera), game.batch); 

    Gdx.input.setInputProcessor(stage); 

    textButtonStyle = new TextButton.TextButtonStyle(); 

    textButtonStyle.up = buttonSkin.getDrawable("start_button_up"); 
    textButtonStyle.down = buttonSkin.getDrawable("start_button_down"); 

    textButtonStyle.font = font; 

    button = new TextButton("Start", textButtonStyle); 
    button.setHeight(AssetLoader.startButtonDown.getRegionHeight()); 
    button.setWidth(AssetLoader.startButtonDown.getRegionWidth()); 

    button.setPosition(0,100); 

    stage.addActor(button); 
    button.addListener(new ClickListener() { 
     public void touchUp (InputEvent event, float x, float y, int pointer, int button) { 
      /// start game 
      game.setScreen(new PlayScreen(game)); 
      dispose(); 
     } 
    }); 

Mais dans ce cas, je ne vraiment pas besoin de mon AssetsLoader (attendre la RegionWidth et RegionHeight) et il semble que beaucoup de code pour chaque bouton dans différentes classes. Y a-t-il une solution pour résoudre ce problème plus efficace?

+0

quel est le problème? – Aryan

+0

Ma question est la suivante: cette méthode est-elle acceptable ou existe-t-il une autre méthode efficace? –

Répondre

0

AssetLoader classe ayant un textureAtlas et la référence de deux TextureRegion qui est à l'intérieur de cette textureAtlas.

Si vous voulez compter sur AssetLoader, créer un objet de AssetLoader et utiliser atlas de AssetLoader au lieu de buttonsAtlas (une nouvelle instance de textureAtlas).

ou oublier AssetLoader

button = new TextButton("Start", textButtonStyle); 
button.setHeight(buttonsAtlas.findRegion("start_button_up").getRegionHeight()); 
button.setWidth(buttonsAtlas.findRegion("start_button_up").getRegionWidth()); 

Il est bon moyen de créer tous les actifs dans une classe et utiliser dans le jeu, si possible, vous devez utiliser AssetManager dans votre jeu.