2015-12-05 2 views
1

Я изучаю libGDX, просто для удовольствия, и наступил довольно рано. Мой актер, похоже, не получает ввод сенсорных/мышь. Я широко использую googled и проверял все распространенные ошибки (настройка ввода, установка границ, настройка сенсорного), но все равно не повезло. Кто-нибудь может мне помочь.libGDX Актер не получает вход

Stage

/* GameStage.java */ 
public class GameStage extends Stage{ 

    private Game gameInstance; 

    public GameStage(Game gameInstance) { 
     super(new ScreenViewport()); 
     Gdx.input.setInputProcessor(this); 

     Tile tile = new Tile(2); 
     addActor(tile);  
    } 
} 

Актер

/* Tile.java */ 
public class Tile extends Actor{ 

    public enum Side{ 
     FRONT, 
     BACK 
    } 
    private int value; 
    private Texture backTexture; 
    private Texture frontTexture; 
    private Side currentSide; 

    public Tile(int value) { 
     this.value = value; 
     backTexture = new Texture("TileBack.png"); 
     frontTexture = new Texture("Tile " + String.valueOf(value)+".png"); 
     currentSide = Side.BACK; 

     setPosition(0, 0); 
     setSize(128, 128); 
     setBounds(getX(), getY(), getWidth(), getHeight()); 
     setTouchable(Touchable.enabled); 

     addListener(new InputListener(){ 
      @Override 
      public void touchUp(InputEvent event, float x, float y, int pointer, int button) { 
       System.out.println("Touch"); 
       super.touchUp(event, x, y, pointer, button); 
      } 
     }); 
    } 

    @Override 
    public void draw(Batch batch, float parentAlpha) { 
     Color color = getColor(); 
     batch.setColor(color.r, color.g, color.b, color.a * parentAlpha); 
     if(currentSide == Side.BACK){ 
      batch.draw(backTexture, getX(), getY(), getWidth(), getHeight()); 
     } 
     else{ 
      batch.draw(frontTexture, getX(), getY(), getWidth(), getHeight()); 
     } 

    } 

    public int getValue() { 
     return value; 
    } 
} 

Что мне не хватает ?? Я также попытался внедрить touchUp на этапе и вернуть false и true, но не повезло.

Заранее благодарен!

ответ

1

touchUp событие вызывается только в том случае, если touchDown возвращает true (по умолчанию false). Вы можете исправить свой код, выполнив следующие действия:

addListener(new InputListener(){ 
     @Override 
     public void touchUp(InputEvent event, float x, float y, int pointer, int button) { 
      System.out.println("Touch"); 
      super.touchUp(event, x, y, pointer, button); 
     } 

     // Add this: 
     @Override 
     public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
      System.out.println("down"); 
      return true; // Important! 
     } 
    }); 

На стороне записки: Лучше использовать GDX logger вместо System.out.println.

+0

* BUMP * Спасибо! Я застрял с этим с прошлой ночи .... – tusharkant15

Смежные вопросы