jMonkeyEngine:flyCam和inputManager都返回NULL

时间:2016-09-13 16:34:48

标签: java jmonkeyengine

我遇到了麻烦:突然flyCam和simpleInitApp()内的inputManager都变成了NULL。

我不明白发生了什么!它们总是空的!

public void simpleInitApp() {
        Box b = new Box(1, 1, 1);
        System.out.println("inputManager = " + inputManager + "; flyCam = " + flyCam);
        Geometry geom = new Geometry("Box", b);

        Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
        mat.setColor("Color", ColorRGBA.Blue);
        geom.setMaterial(mat);

        rootNode.attachChild(geom);
    }

输出:inputManager = null; flyCam = null

我的所有示例(我通过jMonkey Book做了大量示例)现在抛出了NullPointer异常(之前它们都有效)。

我试图:

  1. 重新安装jMonkey SDK并清理Windows注册表
  2. 重新安装视频驱动程序
  3. ......没有任何帮助...

    我不明白我实际上做了什么......据我所知,我刚写过:

    private final InputListener flyCamListener = new ActionListener() {
            @Override
            public void onAction(String name, boolean isPressed, float tpf) {
                boolean enabled = app.getFlyByCamera().isEnabled();
                app.getFlyByCamera().setEnabled(!enabled);
            }
        };
    

    一切都被粉碎了。

    ===

    jMonkey 3.0.10_x86,Java:1.7.0_51,Windows 7 x86,OpenGL:3.0.0,GLSL Ver:1.30 - Intel Build 8.15.10.2342

1 个答案:

答案 0 :(得分:0)

我想我解决了这个问题。在我发现的其中一个论坛上,并将其包括在新项目中这样一个部分:

    Main app = new Main();
    AppSettings settings = new AppSettings(true);
    settings.setRenderer(AppSettings.LWJGL_OPENGL_ANY);
    settings.setResolution(640, 480);
    settings.setFrameRate(30);
    app.setSettings(settings);
    app.start();

......一切都开始奏效了!包括我之前意外开始粉碎的所有应用程序。

所以我认为关键点是setRenderer()方法。我记得我在没有这样一行的情况下发布了我的灾难性应用程序,并且可能是jMonkey为了自己“保存”了设置。

那么为什么jMonkey在全球范围内永久保留其不稳定设置?所有其他应用程序粉碎,重新安装SDK没有帮助等等!