2017-05-02 3 views
0

Je suis en train de concevoir un jeu qui nécessite de générer une vaste gamme de boutons, avec différentes combinaisons de couleurs et de contours d'arrière-plan. J'ai déjà un Sprite pour l'arrière-plan et un Sprite pour le contour et appliquer des teintes à chacun.Comment créer un ImageButton avec plusieurs couches Sprite/Texture dans LibGDX?

J'ai déjà essayé de joindre les deux sur un SpriteBatch mais je n'ai pas eu de chance de le convertir en une structure supportée par ImageButton.

Merci d'avance.

Répondre

0

Vous pouvez créer votre propre version d'un ImageButton en étendant la classe Actor et en implémentant vos propres méthodes de dessin. L'exemple ci-dessous n'est pas testé mais devrait vous donner et idée sur la façon de faire votre propre bouton personnalisé:

private class LayeredButton extends Actor{ 
    private int width = 100; 
    private int height = 75; 
    private Texture backGround; 
    private Texture foreGround; 
    private Texture outline; 

    public LayeredButton(Texture bg, Texture fg, Texture ol){ 
     setBounds(this.getX(),this.getY(),this.width,this.height); 
     backGround = bg; 
     foreGround = fg; 
     outline = ol; 
     addListener(new InputListener(){ 
      public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) { 
       // do something on click here 
       return true; 
      } 
     }); 
    } 
    @Override 
    public void draw(Batch batch, float alpha){ 
     // draw from back to front 
     batch.draw(backGround,this.getX(),this.getY()); 
     batch.draw(foreGround,this.getX(),this.getY()); 
     batch.draw(outline,this.getX(),this.getY()); 
    } 

    @Override 
    public void act(float delta){ 
     // do stuff to button 
    } 
} 
+0

C'est en fait une idée brillamment simple, redéfinissant la méthode 'draw'. Merci beaucoup. –