2016-09-13 3 views
1

У меня проблема: внезапно flyCam и inputManager внутри simpleInitApp() стали равными NULL.jMonkeyEngine: flyCam и 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. Переустановка драйверов видео

... ничего не помогает ...

Я не понимаю что я на самом деле сделал ... Насколько я помню, я только что написал это:

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 построить 8.15.10.2342

+0

Если вы не инициализируете 'FlyCamAppState' (например, не используя конструктор по умолчанию' SimpleApplication'), 'flyCam' будет NULL. «inputManager» будет NULL, если вы установите для параметра «UseInput» в config значение false. – 1000ml

ответ

0

Я предполагаю, что я решил проблема. На одном из форумов я нашел и включил в проект NEW такой раздел:

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 не помогает и так далее!

+1

«Ужасное» приложение, как вы его называете, сохраняет свои настройки как «по умолчанию». Любое другое приложение, использующее «новые AppSettings (true)» (true здесь означает «использовать настройки по умолчанию»), будет использовать этот параметр. Вот почему настройки разрешения и т. Д. Сохраняются между сеансами. Это не jme или сам SDK, который помнит об этом, просто настройки. – reden

+0

Ты абсолютно прав, поменяй. Лучшее решение, на мой взгляд, состоит в том, чтобы всегда настраивать настройки и не полагаться на значения по умолчанию –

Смежные вопросы