Java 鼠标移动时LWJGL应用程序NullPointerException
我第一次使用LibGDX,当我试图在多路复用器中实现一个InputAdapter时,我得到了一个NullPointerException。这条消息似乎没有什么帮助,但我对我的Java相当生疏。我曾尝试使用一个实现InputProcessor接口的常规类,并尝试记录任何可能抛出Null的内容,但我无法找到原因 这是我的密码Java 鼠标移动时LWJGL应用程序NullPointerException,java,libgdx,lwjgl,Java,Libgdx,Lwjgl,我第一次使用LibGDX,当我试图在多路复用器中实现一个InputAdapter时,我得到了一个NullPointerException。这条消息似乎没有什么帮助,但我对我的Java相当生疏。我曾尝试使用一个实现InputProcessor接口的常规类,并尝试记录任何可能抛出Null的内容,但我无法找到原因 这是我的密码 import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.bad
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.InputMultiplexer;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
import com.badlogic.gdx.graphics.g3d.Environment;
import com.badlogic.gdx.graphics.g3d.Material;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.graphics.g3d.ModelBatch;
import com.badlogic.gdx.graphics.g3d.ModelInstance;
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;
import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight;
import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder;
public class Game implements ApplicationListener {
public PerspectiveCamera cam;
public Model model;
public ModelInstance instance;
public ModelBatch modelBatch;
public Environment environment;
public InputMultiplexer input;
public static int gWidth = 800;
public static int gHeight = 600;
@Override
public void create() {
this.modelBatch = new ModelBatch();
this.environment = new Environment();
this.environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
this.environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));
/**
* Add input adapters.
*/
this.cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
this.cam.position.set(10f, 20f, 0);
this.cam.lookAt(0, 0, 0);
this.cam.rotate(67f, 0f, 0f, 0f);
this.cam.near = 1f;
this.cam.far = 300f;
this.input = new InputMultiplexer(Gdx.input.getInputProcessor());
this.input.addProcessor(new MouseCamController());
Gdx.input.setInputProcessor(this.input);
this.cam.update();
ModelBuilder modelBuilder = new ModelBuilder();
model = modelBuilder.createBox(5f, 5f, 5f,
new Material(ColorAttribute.createDiffuse(Color.GREEN)),
Usage.Position | Usage.Normal);
instance = new ModelInstance(model);
}
@Override
public void resize(int width, int height) {
}
@Override
public void render() {
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// if (this.cam.fieldOfView < 120) {
// this.cam.fieldOfView += 10;
// }
this.cam.update();
this.modelBatch.begin(this.cam);
this.modelBatch.render(instance, environment);
this.modelBatch.end();
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
this.modelBatch.dispose();
this.model.dispose();
}
public class MouseCamController extends InputAdapter {
@Override
public boolean scrolled(int amount) {
// Gdx.app.log("INPUT", "A: " + amount);
return true;
}
}
}
问题是获取当前的输入处理器。因为没有,所以当它开始遍历每个适配器时,它实际上遇到了NULL。愚蠢的问题,简单的答案。问题已解决,可供子孙后代使用 问题在于获取当前的输入处理器。因为没有,所以当它开始遍历每个适配器时,它实际上遇到了NULL。愚蠢的问题,简单的答案。问题已解决,可供子孙后代使用 当InputMultiplexer到达其列表中的空InputProcessor时,问题就会出现。我已经尝试通过在返回的InputProcessor之后添加空处理器来复制它,但是错误没有发生 只需从InputMultiplexer中删除任何空的InputProcessor,它就会正常工作。如果不确定哪一个为空,请尝试列出所有处理器
InputMultiplexer plexer;
// Add processors to plexer...
System.out.println(plexer.getProcessors().toString());
当InputMultiplexer到达其列表中的空InputProcessor时,问题就会出现。我已经尝试通过在返回的InputProcessor之后添加空处理器来复制它,但是错误没有发生 只需从InputMultiplexer中删除任何空的InputProcessor,它就会正常工作。如果不确定哪一个为空,请尝试列出所有处理器
InputMultiplexer plexer;
// Add processors to plexer...
System.out.println(plexer.getProcessors().toString());