2017-12-31 4 views
0

Ich habe diesen Schauspieler HintsWindow, die 3 TextureRegions (Hintergrund, Abbrechen, Fortfahren) enthält.AddListener zu einer bestimmten Position eines Schauspielers in LibGdx Scene2d

public class HintsWindow extends Actor { 

    TextureRegion bg; 
    TextureRegion cancel; 
    TextureRegion proceed; 

    public HintsWindow() { 
     bg = new TextureRegion(Gdx.files.internal("background.png")); 
     cancel = new TextureRegion(Gdx.files.internal("cancel.png")); 
     proceed = new TextureRegion(Gdx.files.internal("proceed.png")); 
    } 

    @Override 
    public void draw(Batch batch, float parentAlpha) { 
     Color color = getColor(); 
     batch.setColor(color.r, color.g, color.b, color.a * parentAlpha); 
     batch.draw(bg, 171.031f, 484.090f); 
     batch.draw(cancel, 234.837f, 542.926f); 
     batch.draw(proceed, 407.900f, 542.926f); 
    } 
} 

Zeichnung TextureRegions funktioniert gut, aber hier ist meine Frage:

ist es möglich, sondern der ganzen Schauspieler addListener nicht abbrechen und gehen so wirken sie wie Knöpfe?

etwas wie folgt aus:

addListener(new ClickListener() { 
    @Override 
    public void clicked(InputEvent event, float x, float y) { 
     // if proceed pressed --> do something 
     // else if cancel pressed --> addAction(Actions.fadeOut(1.0f)); 
    } 
}); 

Antwort

1

können Sie Ihre HintsWindow enthalten machen Schauspieler statt TextureRegions. Ändern Sie sie in Bilder.

public class HintsWindow extends Actor { 

    Image bg; 
    Image cancel; 
    Image proceed; 

    public HintsWindow() { 
     bg = new Image(new TextureRegion(Gdx.files.internal("background.png"))); 
     cancel = new Image(new TextureRegion(Gdx.files.internal("cancel.png"))); 
     proceed = new Image(new TextureRegion(Gdx.files.internal("proceed.png"))); 

     // here you can add listener 
     cancel.addListener(new ClickListener() { 
      @Override 
      public void clicked(InputEvent event, float x, float y) { 
      // if proceed pressed --> do something 
      // else if cancel pressed --> addAction(Actions.fadeOut(1.0f)); 
    } 
}); 
    } 

    @Override 
    public void draw(Batch batch, float parentAlpha) { 
     Color color = getColor(); 
     color.set(color.r, color.g, color.b, color.a * parentAlpha); 
     bg.setColor(color); 
     cancel.setColor(color); 
     proceed.setColor(color); 
    } 
} 
Verwandte Themen