2017-03-28 67 views
0

我想每個圖像(playIcon,pauseIcon)上創建eventListner但使用潤色和接地如何將動作添加到libgdx中的紋理打包器?

這裏它不工作是我的代碼:

TextureAtlas buttonsPlayPause = new TextureAtlas("uiii/uiii.pack"); 
skin.addRegions(buttonsPlayPause); 
TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle(); 
textButtonStyle.font = font; 
textButtonStyle.up = skin.getDrawable("pauseIcon"); 
textButtonStyle.checked = skin.getDrawable("playIcon"); 
TextButton button = new TextButton("", textButtonStyle); 
button.setY(pauseY); 
button.setX(Gdx.graphics.getWidth()/6); 
button.setSize(150,150); 
stage.addActor(button); 

//pause/playAction 
button.addListener(new ClickListener() { 
     @Override 
     public void touchUp(InputEvent event, float x, float y, int pointer, int button) {resume(); 
       } 
     @Override 
     public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
     pause(); 
      return true; 
     } 
    }); 

什麼現在的情況是,該按鈕收聽行爲如'istouched()'而不是'justtouched()'。當我點擊按鈕時,遊戲暫停,但每當我移開手指時,都不會停頓,遊戲就會運行。

+0

你是否已經通過此Gdx.input.setInputProcessor(stage)將stage設置爲InputProcessor; – Aryan

+0

從你的評論中,你想要發生什麼以及它目前的行爲有什麼問題還不清楚。 – Tenfour04

+0

@ Tenfour04。現在發生的事情是,按鈕偵聽器的行爲像'istouched()'而不是'justtouched()'。當我點擊按鈕時,遊戲暫停,但是每當我移開手指時,就沒有停頓,遊戲運行 – Lynob

回答

1

如果我理解正確,您希望此按鈕在播放和暫停之間切換,根據當前狀態調用pause()resume()

Button類已經有一個內置的內部InputListener,因此,所有你需要的是一個ChangeListener反應按鈕按下:

//pause/playAction 
button.addListener(new ChangeListener() { 
    @Override 
    public void changed (ChangeEvent event, Actor actor) { 
     if (button.isChecked()) 
      resume(); 
     else 
      play(); 
    } 
}); 

確保將其標記final當你第一次聲明它,所以聽衆可以參考它:

//... 
final TextButton button = new TextButton("", textButtonStyle); 
//...