【问题标题】:Syncing interaction between a GUI and a while loop同步 GUI 和 while 循环之间的交互
【发布时间】:2014-04-24 20:13:43
【问题描述】:

我目前正在用 java 编写游戏,并且正在使用接口来处理游戏的输入/输出。我目前有一个正常工作的文本界面。我正在使用类似于以下的代码:

while (moveExists())
{
    String in = interface.getInput();
    processInput(in);
    interface.displayOutput(this.getState);
}

纯文本界面有效,因为它暂停等待输入,但我不确定如何在 GUI 实现中完成类似的行为。我如何“等待”来自 actionListener 的输入?

如果不是,我可能会使用不太像游戏循环的代码,而更像是一个有限状态机,这样我就不需要处理两个不同的线程来协调它们的动作。

【问题讨论】:

  • "我如何'等待'来自 actionListener 的输入?" - 你不能。基本上,GUI 的工作方式是 GUI 工具包已经运行循环处理事件。为了保持响应性,必须快速处理这些事件,这意味着无需等待其中的任何内容。当提交移动的ActionListener 被触发时,只要做任何适当的事情,除非这需要很长时间。
  • @millimoose 谢谢。似乎我认为这充其量是困难的并没有错。目前,我的游戏控制界面。你认为反过来会更好吗?让 UI 控制游戏?

标签: java user-interface interface


【解决方案1】:

您可以简单地启动一个 GUI(它有自己的独立线程),其中包含一个文本区域,可能还有一个按钮或类似的东西,然后将一个 ActionListener 添加到文本区域或按钮,然后执行您需要的代码当监听器被触发时(即一些代码被插入或按钮被点击)。

如果您还有另一个需要循环运行的“后台”线程,那就另当别论了……

【讨论】:

  • 不幸的是,这是“另一个故事”。我的游戏正在运行一个 while 循环,但需要等到 swing GUI 触发 actionPerformed。这就像试图抢劫没有钱包的人一样;你要么逃跑,要么等他们开车回家抢。
猜你喜欢
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
  • 2021-04-22
相关资源
最近更新 更多