gpt4 book ai didi

java - 跨时间修改一个Runnable类属性

转载 作者:行者123 更新时间:2023-12-01 10:06:55 25 4
gpt4 key购买 nike

是否可以随时修改实现 Runnable 接口(interface)的类的属性?

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

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());
}

};

当我单击暂停按钮时, boolean 值会更改,但单击它一秒钟将不会再更改 boolean 值。

最佳答案

您可以按照自己的方式更改 boolean 值,但在我看来,这没有遵循最佳实践。

您当前的问题是退出 while 循环,因此一旦您将 boolean 值更改为 true,可运行对象就不再运行,因此它不再绘制。

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

关于java - 跨时间修改一个Runnable类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36379029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com