Utilisation des Skins

Dans un screen(écran) il est possible de placer des actors (acteurs) qui interagissent dans une stage (scène).

1°) Téléchargement d’une Skin

https://ray3k.wordpress.com/artwork/glassy-ui-skin-for-libgdx/

https://github.com/czyzby/gdx-skins

Placer les fichiers dans le dossier Assets

2°) Utilisation pour des boutons

Un bouton est un acteur (Actor). Pour utiliser un acteur il faut une scène (stage) qui contient tous les acteurs et qui les met à jour.

Il existe différent type de boutons (images, text…). Pour utiliser un bouton avec du texte il faut utiliser la classe TextButton et l’ajouter à la scène. Un TextButton comporte une chaîne de caractères et un ButtonStyle, le TextButtonStyle, est une classe qui comporte toute les informations concernant le bouton (font, drawable …).

Déclaration :

 private Stage stage;  
   private Skin skin;  
   private TextButton button, button2;  
   boolean bClicked=false, bClicked2=false;  
   ////////////////  
   @Override  
   public void create() {  
     //spriteBatch = new SpriteBatch();  
     stage = new Stage(new ScreenViewport());  
     Gdx.input.setInputProcessor(stage);  
     skin = new Skin(Gdx.files.internal("glassy-ui.json"));  
     //-- Add Button (Actor) to the Stage  
     button = new TextButton("Click 1 !", skin);  
     stage.addActor(button);  
     button2 = new TextButton("Click 2 !", skin);  
     stage.addActor(button2);  
     //-- test button click  
     button.addListener(new ClickListener() {  
       @Override  
       public void clicked(InputEvent event, float x, float y) {  
         if (!bClicked)  
         {button.setText("Clicked 1!");  
           bClicked=true;}  
         else  
         {button.setText("Click 1 !");  
           bClicked=false;}  
       }  
     });  
     button2.addListener(new ClickListener() {  
       @Override  
       public void clicked(InputEvent event, float x, float y) {  
         if (!bClicked2)  
         {button2.setText("Clicked 2!");  
           bClicked2=true;}  
         else  
         {button2.setText("Click 2 !");  
           bClicked2=false;}  
       }  
     });  
     Gdx.input.setInputProcessor(stage);  
     //////////////////  

Render :

   public void render() {  
     Gdx.gl.glClearColor(1, 1, 1, 1);  
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);  
     //-- Stage Activation  
     stage.act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f));  
     stage.draw();  
   }  
   @Override  
   public void dispose() {  
     stage.dispose();  
   }  
   @Override  
   public void resize(int width, int height) {  
     stage.getViewport().update(width, height, true);  
     button.setPosition(  
         (width-button.getWidth()),  
         (height-button.getHeight())/2);  
     button2.setPosition(  
         (width-button.getWidth()),  
         (height-button.getHeight()));  
   }  

 

Pour utiliser plusieurs boutons dans une scène il est préférable d’ajouter ces éléments à un tableau (Tab) que l’on ajoutera à la scène.

exemple

 

Références :

https://stackoverflow.com/questions/18526116/using-scene2d-ui-with-libgdx-where-does-the-skin-come-from

https://stackoverflow.com/questions/21488311/how-to-create-a-button-in-libgdx

https://github.com/EsotericSoftware/tablelayout

https://github.com/libgdx/libgdx/wiki/Table

https://github.com/czyzby/gdx-skins

Articles récents
Commentaires récents
fatima dans Bienvenue !
AdminDroid dans Bienvenue !
fatima dans Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :