2012-04-24 78 views
2

這裏是我想要創建的libgdx安卓遊戲的示例。沒什麼特別的,因爲我剛剛開始我的Android遊戲冒險。有沒有一種方法可以檢查一個libgdx Scene2d圖像或Actor是否被觸摸?

這裏有幾個問題我想獲得我使用的Gdx.input.isTouched功能,並檢查了兔子的座標匹配到目前爲止回答

,我這樣做,每個兔子,並在最後,我想有11個,這太寫了。有沒有辦法來檢查是否從導入的圖像類com.badlogic.gdx.scenes.scene2d.ui.Image;被感動?否則Actor類具有該功能?

另一件事是,當我實例化兔子班,我點擊兔子,他們都變成「害怕」。這是因爲Scene2d.Image紋理必須是靜態的。有沒有辦法改變它?

if(Gdx.input.isTouched()){ 

      x = Gdx.input.getX(); 
      y = Gdx.graphics.getHeight() - Gdx.input.getY(); 


     // **** Show Coordinates **** \\ 
      if (x < 420) 
       font.draw(batch, "x:" + x + 
        "\n y: " + y, x, y); 
      else 
       font.draw(batch, "x:" + x + 
         " y: " + y, x-65, y); 
     // **** End Show Coordinates **** \\ 

      //if krolik (bunny) is touched add highscore and change texture to scared 
      if (x >= krolik.pos.x && y >= krolik.pos.y 
        && x <= krolik.pos.x + 64 && y <= krolik.pos.y + 64) 
      { 
       krolik.scared(); 
       highscore+=100; 
      } 
      else if (x >= krolik2.pos.x && y >= krolik2.pos.y 
        && x <= krolik2.pos.x + 64 && y <= krolik2.pos.y + 64) 
      { 
       krolik2.scared(); 
       highscore+=100; 
      } 
     } 
     else{ 

     krolik.normal(); 

     } 
     // **** Show Highscore **** \\ 
     font.draw(batch, "Highscore: " + highscore, 350, 300); 
     batch.draw(krolik.getTexture(), krolik.pos.x, krolik.pos.y); 
     batch.draw(krolik2.getTexture(), krolik2.pos.x, krolik2.pos.y); 
      batch.end(); 
+0

看到這樣的問題:HTTP:/ /stackoverflow.com/questions/9236175/how-to-detect-when-an-actor-is-touched-in-libgdx/9239327#9239327,它可能會幫助你在輸入處理演員 – Ludevik 2012-04-24 18:09:12

回答

5

爲什麼你使用Image而不是使用Stage進行繪圖? Image和其他Actor是用於使用舞臺,可以輕鬆處理您的觸摸事件和繪圖。

這樣創建它們:

for (int i = 0; i < KROLIKS_COUNT; i++) { 
    final Image krolik = new Image(nonScaredTextureRegion); 
    krolik.setClickListener(new ClickListener() { 
     @Override 
     public void click(Actor actor, float x, float y) { 
      krolik.setRegion(scaredTextureRegion); 
      highscore+=100; 
     } 
    }); 
    krolik.x = startPosX; 
    krolik.y = startPosY; 
    stage.addActor(krolik); 
} 

設置了階段作爲輸入處理器:

Gdx.input.setInputProcessor(stage); 

然後在渲染,只需:

stage.act(Gdx.graphics.getDeltaTime()); 
stage.draw(); 
+0

真棒,這有助於很多,但你知道我會如何使用它來聽方法touchDragged()或touchDown()? – 2012-11-01 15:45:27

相關問題