java - 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) 循环。
解决方案
你没有发布代码,所以我们不得不猜测。事件侦听器在 Swing 事件调度线程上执行。您的 while 循环可能正在主线程或其他线程上同时执行。
docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html
解决了答案。
推荐阅读
- asp.net-mvc - 从 IFrame 重定向后将 MVC 视图加载到帧外
- google-cloud-functions - 如何查看以前部署的 Google Cloud Function 版本的日志?
- r - 从指定行中的最大值到最小值对数据集中的列进行排序
- python - 如何将具有 n 列的矩阵转换为只有一列的矩阵?
- c# - 同一场景中的重放关卡有很多关卡 - Unity C#
- r - R中的ggplot2:添加错误栏不起作用
- json - 在 React 中加载 JSON 文件,没有 JSON 扩展
- javascript - 为什么我的函数在遇到返回后执行剩余代码(在两个循环内返回)
- javascript - 为什么我的百分号没有在整数值旁边输出?
- python - `json.decoder.JSONDecodeError` 使用 Python 和 Flask 制作应用程序时