如何在循环中调用keyPressed()方法?

时间:2016-07-12 20:40:00

标签: java loops

他们我是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;
        }
}

2 个答案:

答案 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;。在更新中,您可以根据当前按下的键更新您的位置。

然而,游戏循环应该更多地融合。这只是一个非常基本的模型。

关于游戏循环:http://gameprogrammingpatterns.com/game-loop.html