2016-02-26 194 views
0

所以我有一個我正在開發的遊戲,一旦你完成遊戲,我想讓用戶點擊「再次播放」按鈕,並能夠在開始時重置。 爲此,我在Texture上創建一個Rectangle並使用contains()方法。設置光標位置

if(cloud.contains((float)Gdx.input.getX(),(float)(Gdx.graphics.getHeight()-Gdx.input.getY()))){ 
    reset(); 
} 

復位方法:

public void reset(){ 
    speed=0; 
    paraY = Gdx.graphics.getHeight() - para[parachuteState].getHeight(); 
    gameState=0; 
    backY = 0-Gdx.graphics.getHeight(); 
    bach=0; 
    Gdx.input.setCursorPosition(Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/2); 
} 

所以發生的是程序識別被按下的按鍵和復位,但是當遊戲結束它再次不顯示的結束畫面自動復位。我認爲光標沒有移動到中心,而是保持在按鈕的頂部。我錯誤地使用setCursorPosition()方法或有另一種方法來做到這一點?

+0

但是,爲什麼你不希望使用按鈕,而不是紋理與矩形? – Enigo

+0

閱讀觸摸聽衆。它看起來像你不斷輪詢最後一個已知的手指位置,而不是對屏幕上新的水龍頭做出反應。 'setCursorPosition'影響PC上箭頭的位置。它不會在Android上做任何事情,因爲沒有光標。 – Tenfour04

+0

按鈕會更容易嗎?我有一張我在Adobe Illustrator中繪製的圖像,我想要點擊@Enigo –

回答

0

該按鈕將是正確的。它可能看起來更復雜,但它是推薦的方式來做你想做的事情。 因此,創建一個按鈕,你應該做這樣的事情:

Skin skin = new Skin(); 
skin.addRegions(uiTextureAtlas); 
TextButton.TextButtonStyle buttonStyle = new TextButton.TextButtonStyle(); 
buttonStyle.up = skin.getDrawable("textureName"); 
buttonStyle.font = font; 
Button button = new Button(buttonStyle); 
button.addListener(new InputListener() { 
    @Override 
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
     reset(); 
     return true; 
    } 
}); 
button.setSize(100, 100); 
button.setPosition(300, 400); 

然後在Screen類創建

Stage stage = new Stage(); 
stage.addActor(button); 
Gdx.input.setInputProcessor(stage);