是否有可能隨時間修改實現Runnable接口的類中的屬性?在整個時間內修改Runnable類屬性
我在實現Runnable接口的GamePanel類中創建了一個遊戲循環。 然而,正如我所料,這是不可能修改布爾屬性是這樣的:
public class GamePanel extends SurfaceView implements Runnable {
private volatile boolean _isPaused;
public synchronized void setPause(boolean b) {
_isPaused = b;
}
public synchronized boolean getPause() {
return _isPaused;
}
@Override
public void run() {
while (!_isPaused)
draw();
}
public void draw()
{
if (_isPaused)
drawPauseScreen();
else
drawGameScreen();
}
}
在我的MainActivity,我有連接到一個簡單的按鈕監聽器:
private View.OnClickListener buttonPauseListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
_gamePanel.setPause(!_gamePanel.getPause());
}
};
當我點擊暫停按鈕,布爾值被改變,但是一秒鐘點擊它不會改變布爾值。
你總是設置_isPaused值,在onClick你不應該這樣做? _gamePanel.setPause(!_ gamePanel.getPause()); – jonathanrz
我編輯了代碼,這是一個粘貼錯誤。 我有: _gamePanel.setPause(!_ gamePanel.getPause()); ,這是行不通的 –