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