2012-03-08 65 views
0

我正在使用MouseOverArea製作一個按鈕。經過一些試驗和錯誤之後,我意識到我可以覆蓋InputListener中的方法,以在通知輸入事件時執行特定操作。我應該在InputListener對象的方法內實現動作嗎?

例如,當光標位於組件上方時按下鼠標左鍵時,請執行此操作。

@Override 
public void mousePressed(int button, int mx, int my) { 
    if (isMouseOver() && button == Input.MOUSE_LEFT_BUTTON) { 
     // Some magic happens 
    } 
} 

但是,我不能做像改變當前遊戲狀態的事情,因爲沒有遊戲對象。我知道有很多方法可以解決這個問題,但我想知道什麼是Slick方式來做到這一點。

這些方法適合這種行爲嗎?

回答

1

修改遊戲狀態的一種方法是使用布爾狀態;哪些是布爾變量來保存遊戲或玩家的狀態。例如:

boolean isMovingUp, isMovingLeft, isMovingRight, isMovingDown; 

您可以根據然後設置這些真/假什麼鼠標或鍵盤事件發生,然後你的遊戲類讀取這些變量,就像這樣:

if (isMovingUp) { 
    // do something 
    isMovingUp = !isMovingUp; 
} 

希望幫助!

+0

感謝您的快速回復。但是,在方法內部實現這種邏輯意味着這些標誌只會在某些輸入事件觸發後纔會更新。如果我只想執行一次動作,該怎麼辦?我可以在動作完成後重置標誌,但對於我在組件外部做這些事情似乎很奇怪。 – 2012-03-08 16:19:04

相關問題