他们我是Lukas而且我正在学习java,但我有一个问题:如何在循环中调用方法keyPressed(KeyListener evt)? 我想编写一个简单的2D java游戏,这是我的keyPressed方法的代码:
private void KeyPressed(java.awt.event.KeyEvent evt) {
key = evt.getKeyCode();
if (key == KeyEvent.VK_W) {
direction = 1;
PlayerMovement();
}
if (key == KeyEvent.VK_S) {
direction = 2;
PlayerMovement();
}
if (key == KeyEvent.VK_D) {
direction = 3;
}
}
答案 0 :(得分:0)
我告诉你必须使用THREADS,因为在这里你正在使用该程序,但如果你开始一个线程,你可以做任何你想要的程序仍然正常工作 了解线程因为游戏都是关于线程的
private class Walk_thread extends java.lang.Thread{
public void run(){
//call the walk methode here
PlayerMovement();
}
}
所以当按下键时,创建一个调用playermovement的线程
if (key == KeyEvent.VK_W) {
direction = 1;
new Walk_thread().start();//here the method run is called
System.out.println("program will not stop the thread is walking and the program is continued too");
}
答案 1 :(得分:0)
public class GameLoop implements Runnable {
public void run() {
//initialization goes here
while(running){
processInput();
update();
render();
}
}
processUpdate() {
//here you listen to inputs
}
}
您可以设置几个布尔值以跟踪当前按下的键。例如,如果按下D则设置movingRight = true;
,如果D被释放则设置movingRight = false;
。在更新中,您可以根据当前按下的键更新您的位置。
然而,游戏循环应该更多地融合。这只是一个非常基本的模型。