Input KeyListener和JOGL的问题
我正试图绑定一个键来在屏幕上转换一个GL_四元组。我创建了一个实现KeyListener的类(我将在下面附加),其中我有一个方法,在按下“d”键时,向四边形顶点的x坐标添加0.1。现在,我有两个与此相关的问题Input KeyListener和JOGL的问题,input,2d,keylistener,jogl,translate-animation,Input,2d,Keylistener,Jogl,Translate Animation,我正试图绑定一个键来在屏幕上转换一个GL_四元组。我创建了一个实现KeyListener的类(我将在下面附加),其中我有一个方法,在按下“d”键时,向四边形顶点的x坐标添加0.1。现在,我有两个与此相关的问题 首先,它似乎没有任何作用。按键时,对象不会发生任何变化 有没有更好的方法来实现我的目标?我的最终目标是最终得到一个精灵,相机聚焦在这个精灵上,它可以在视觉上的2D游戏世界中移动 谢谢你抽出时间 代码: SpriteTest.java package com.mangostudios.spr
package com.mangostudios.spritetest;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import com.jogamp.opengl.util.FPSAnimator;
public class SpriteTest
{
public static void main(String[] args) {
GLProfile glp = GLProfile.getDefault();
GLCapabilities caps = new GLCapabilities(glp);
GLCanvas canvas = new GLCanvas(caps);
Frame frame = new Frame("AWT Window Test");
frame.setSize(300, 300);
frame.add(canvas);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
canvas.addGLEventListener(new Renderer());
FPSAnimator animator = new FPSAnimator(canvas, 60);
//animator.add(canvas);
animator.start();
}
}
Renderer.java
package com.mangostudios.spritetest;
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
public class Renderer implements GLEventListener {
InputListener input = new InputListener();
@Override
public void display(GLAutoDrawable drawable) {
update();
render(drawable);
}
@Override
public void dispose(GLAutoDrawable drawable) {
}
@Override
public void init(GLAutoDrawable drawable) {
}
@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) {
}
private void update() {
}
private void render(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
// draw a triangle filling the window
gl.glBegin(GL2.GL_QUADS);
gl.glVertex2f( input.xTran, 0.1f);
gl.glVertex2f( input.xTran,-0.1f);
gl.glVertex2f( -input.xTran, -0.1f);
gl.glVertex2f( -input.xTran, 0.1f);
gl.glEnd();
}
}
InputListener.java
package com.mangostudios.spritetest;
import com.jogamp.newt.event.KeyEvent;
import com.jogamp.newt.event.KeyListener;
public class InputListener implements KeyListener{
boolean loopBool = false;
float xTran = 0.1f;
float yTran = 0.1f;
@Override
public void keyPressed(KeyEvent d) {
loopBool = true;
while (loopBool = true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void keyReleased(KeyEvent d) {
}
}
起初,您从未调用addKeyListener()。其次,不应该在keyPressed()中放入无限循环。第三,使用NEWT KeyListener而使用AWT GLCanvas:s而不是将GLWindow与NEWT KeyListener一起使用,或者将AWT GLCanvas与AWT KeyListener一起使用,或者使用NewtCanvasAWT。最后,在编写您自己的示例之前,请尝试了解它的工作原理