首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随时间修改Runnable类属性

随时间修改Runnable类属性
EN

Stack Overflow用户
提问于 2016-04-03 05:39:21
回答 1查看 104关注 0票数 0

是否可以跨时间修改实现Runnable接口的类的属性?

我已经在实现Runnable接口的GamePanel类中创建了一个游戏循环。然而,正如我所料,不可能像这样修改布尔属性:

代码语言:javascript
复制
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中,我有一个监听器附加到一个简单的按钮上:

代码语言:javascript
复制
private View.OnClickListener buttonPauseListener = new View.OnClickListener() {

  @Override
  public void onClick(View v) {
      _gamePanel.setPause(!_gamePanel.getPause());
  }

};

当我单击pause按钮时,布尔值会更改,但再次单击它不会再更改布尔值。

EN

回答 1

Stack Overflow用户

发布于 2016-04-03 05:49:28

您可以像这样更改布尔值,但在我看来,这并不符合最佳实践。

您当前的问题是您退出了while循环,因此runnable不再运行,只要您将布尔值更改为true,它就不再绘制。

编辑:我建议使用AtomicBoolean来使代码更清晰。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36379029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档