Runnableインターフェイスを実装しているクラスの属性を変更することは可能ですか?時間の経過とともにRunnableクラス属性を変更する
Runnableインターフェイスを実装したGamePanelクラスでゲームループを作成しました。 は、しかし、私は予想通り、それはこのような論理的属性変更することは不可能である:私は上をクリックすると
private View.OnClickListener buttonPauseListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
_gamePanel.setPause(!_gamePanel.getPause());
}
};
:私のMainActivityで
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();
}
}
を、私は簡単なボタンに添付リスナーを持っていますブール値は変更されますが、それを1秒間クリックするとブール値は変更されません。
あなたはいつも_isPaused値を設定していますが、onClickではこれをしないでください。 _gamePanel.setPause(!_ gamePanel.getPause()); – jonathanrz
私はコードを編集しました。それはペーストミスでした。 私は持っています: _gamePanel.setPause(!_ gamePanel.getPause()); これは動作していません –