Java 带有键盘输入的LWJGL方法在游戏循环中不起作用

Java 带有键盘输入的LWJGL方法在游戏循环中不起作用,java,methods,lwjgl,Java,Methods,Lwjgl,我正在尝试用java制作一个游戏,我正在使用LWJGL。所以我可以用箭头键在屏幕上移动一个四边形,效果非常好。虽然它的代码在Main构造函数中,虽然可以工作,但看起来不太好。所以我决定将它放在一个方法中,并在Main构造函数中调用该方法,以节省构造函数中的一些空间。但是,当我将代码放入一个方法中并调用它时,该函数不起作用。当我按箭头键时,立方体不会移动 这是我的move方法(当在主构造函数中调用时,它不会执行任何操作): 这是我的主要构造器,游戏循环在这里。我有一些例子是float x、floa

我正在尝试用java制作一个游戏,我正在使用LWJGL。所以我可以用箭头键在屏幕上移动一个四边形,效果非常好。虽然它的代码在
Main
构造函数中,虽然可以工作,但看起来不太好。所以我决定将它放在一个方法中,并在
Main
构造函数中调用该方法,以节省构造函数中的一些空间。但是,当我将代码放入一个方法中并调用它时,该函数不起作用。当我按箭头键时,立方体不会移动

这是我的move方法(当在主构造函数中调用时,它不会执行任何操作):

这是我的主要构造器,游戏循环在这里。我有一些例子是float x、float y、float speed、int width和int height。以防万一你在代码中看到它们并想知道它们来自哪里

public Main(){
    Display.setTitle("Squares!");
    try {
        Display.setDisplayMode(new DisplayMode(800,600));
        Display.create();
    } catch (LWJGLException e) {
        e.printStackTrace();
    }

    initGL();

    while(!Display.isCloseRequested()){

        int deltaTime = getDelta();

        drawSquare(x, y, width, height);
        moveSquare(x, y, speed, deltaTime);

        initClock();
        Display.update();
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
        Display.sync(64); 
    } 

    Display.destroy();
}

静态方法属于类,而不属于对象。如果您想访问静态方法中的非静态字段,如x、y、speed。。。这会给你一个错误。但是你在这里实际做的是把一对参数传递给你的move方法,这对它们做一些事情并不重要,因为这只会修改你方法中的那些副本

假设您有一个
Square
类,并且希望使用不应该是静态的move方法使其移动

public void move(float dt){
    //move stuff here
}

您甚至不必只传递参数delta time,因为每个square对象都有自己的副本(如果不是静态的),move将使用这些副本

静态方法属于类,而不属于对象。如果您想访问静态方法中的非静态字段,如x、y、speed。。。这会给你一个错误。但是你在这里实际做的是把一对参数传递给你的move方法,这对它们做一些事情并不重要,因为这只会修改你方法中的那些副本

假设您有一个
Square
类,并且希望使用不应该是静态的move方法使其移动

public void move(float dt){
    //move stuff here
}

您甚至不必只传递参数delta time,因为每个square对象都有自己的副本(如果不是静态的),move将使用这些副本

我很高兴能帮上忙@安琪尔·加西亚我很高兴能帮上忙@安吉尔·加西亚