首页 > 解决方案 > KeyEvent发生时代码的执行顺序

问题描述

我试图在 Java 中开发 Snake,并且我使用 KeyListeners 来获取按钮 w、a、s 和 d 的 KeyEvents。我创建了一个实现 KeyEvent 的类,并将该类的一个对象添加到我正在绘制的画布中。

游戏在 while(true) 循环中运行,在此循环中,它每秒调用 update() 方法 60 次,同时一直调用 render() 方法。

我现在的问题是关于 KeyEvent:如果我键入 fx w,我的 KeyEvent 对象中的方法是否会立即执行,或者我正在运行的 while 循环如何执行代码顺序?在我的 while 循环中根本没有 KeyEvent 对象的引用,如果我键入一个 Key,我的 KeyEvent 对象中的 Methode 会被调用并执行它应该做的任何事情。

除了必须在我的 while(true) 循环中放置一个 if 语句之外,我会读取是否按下了任何按钮或 KeyListener 将在不同的线程上运行,它会在其中查找来自键盘的任何输入while(true) 循环。

标签: javakeyevent

解决方案


你没有发布代码,所以我们不得不猜测。事件侦听器在 Swing 事件调度线程上执行。您的 while 循环可能正在主线程或其他线程上同时执行。

docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html

解决了答案。


推荐阅读