2012-09-19 2 views
13

Ho difficoltà a ricevere eventi che funzionano con il mio Actor in libgdx. Sto usando build notturne.Impossibile ottenere eventi funzionanti nel mio libgdx Attore

mio stadio è impostato un metodo di una sottoclasse Screenshow():

stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true); 
Gdx.input.setInputProcessor(stage); 
TestActor actor = new TestActor(); 
stage.addActor(actor); 

E mia classe attore assomiglia:

class TestActor extends Actor { 
    private Sprite sprite; 
    private TextureAtlas atlas; 

    public TestActor() { 
     atlas = new TextureAtlas(Gdx.files.internal("textures/images-packed.atlas")); 
     sprite = atlas.createSprite("logo-96"); 

     setTouchable(Touchable.enabled); 
     addListener(new InputListener() { 
      public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) { 
       Gdx.app.debug(TestGame.TAG, "TestActor.touchDown()"); 
       return true; // must return true for touchUp event to occur 
      } 
      public void touchUp (InputEvent event, float x, float y, int pointer, int button) { 
       Gdx.app.debug(TestGame.TAG, "TestActor.touchUp()"); 
      } 
     }); 
    } 

    @Override 
    public void draw(SpriteBatch batch, float parentAlpha) { 
     Color color = getColor(); 
     batch.setColor(color.r, color.g, color.b, color.a * parentAlpha); 
     batch.draw(sprite, getX(), getY()); 
    }    
} 

Gli eventi non sembrano al fuoco. Stranamente, ho usato i widget dell'interfaccia utente incorporati come lo TextButton e posso far sì che quegli eventi vengano attivati ​​correttamente. Qualcuno può vedere cosa sto facendo male?

risposta

16

È inoltre necessario impostareBounds per il proprio attore. miglior modo per farlo (se si desidera che la stessa dimensione texture) aggiungere queste righe al costruttore:

setWidth(sprite.getWidth()); 
setHeight(sprite.getHeight()); 
setBounds(0, 0, getWidth(), getHeight()); 

avviso è anche possibile impostare la posizione dei limiti con i primi 2 parametri.

+0

Sì! Grazie! Mi stavo chiedendo se avesse qualcosa di simile. –