我正在尝试使用KeyListeners在Java和Im中开发Snake,以获取w,a,s和d按钮的KeyEvent。我创建了一个实现KeyEvent的类,并将该类的对象添加到了我要绘制的画布上。
游戏在while(true)循环中运行,在该循环中,它每秒调用一次update()方法60次,同时始终调用一次render()方法。
我的问题现在是关于KeyEvent的: 如果我输入f.x。 w,我的KeyEvent对象中的Method是否立即执行,或者关于我正在运行的while循环如何执行代码顺序? 在我的while循环中,根本没有对KeyEvent对象的引用,但是即使我键入一个Key,KeyEvent对象内的Methode也会被调用并执行其应做的一切。
除了将不得不在if(true)循环中放入if语句外,我将读取是否按下了任何Button或KeyListener将在不同的线程上运行,以从中寻找任何输入。键盘进入while(true)循环。
答案 0 :(得分:0)
您未发布任何代码,因此我们不得不猜测。事件侦听器在Swing事件分配线程上执行。您的while循环可能同时在主线程或其他线程上执行。
docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html
解决了答案。