2016-09-13 3 views
1

J'ai un problème: soudainement flyCam et inputManager à l'intérieur de simpleInitApp() sont devenus égaux à NULL.jMonkeyEngine: flyCam et inputManager renvoient tous les deux NULL

Je ne comprends pas ce qui s'est passé! Ils sont toujours 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); 
    } 

Sortie: inputManager = null; flyCam = null

Tous mes exemples (j'ai fait beaucoup d'échantillons par jMonkey Book) lancent des exceptions NullPointer maintenant (ils ont fonctionné avant).

J'ai essayé de:

  1. SDK et réinstaller jMonkey registre propre de Windows
  2. réinstaller les pilotes vidéo

... rien ... aide

Je ne comprends pas ce que j'avais réellement fait ... Autant que je me souvienne je venais d'écrire ceci:

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); 
     } 
    }; 

et tout écrasé.

===

jMonkey 3.0.10_x86, Java: 1.7.0_51, Windows 7 x86, OpenGL: 3.0.0, GLSL Ver: 1,30 - Intel Créer 8.15.10.2342

+0

Si vous n'initialisez pas 'FlyCamAppState' (par exemple en n'utilisant pas le constructeur par défaut de' SimpleApplication'), 'flyCam' sera NULL. 'inputManager' sera NULL si vous définissez" UseInput "dans la configuration à false. – 1000ml

Répondre

0

Je suppose que je résolu le problème. Sur l'un des forums que j'ai trouvé et inclus dans le NOUVEAU projet une telle section:

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(); 

... et tout a commencé à fonctionner! Y compris toutes mes applications précédentes qui ont soudainement commencé à écraser. Donc je pense que le point clé est la méthode setRenderer(). Je me souviens que j'avais lancé mon application désastreuse sans une telle ligne et jMonkey a probablement "sauvé" les réglages pour le plaisir de lui-même.

Alors pourquoi jMonkey conserve-t-il ses PARAMETRES INSTABLES de manière globale et permanente? Toutes les autres applications écrasent, réinstaller le SDK n'aide pas et ainsi de suite!

+1

L'application "désastreuse" que vous appelez a enregistré ses paramètres comme "par défaut". Toute autre application utilisant 'new AppSettings (true)' (true signifie ici "use default settings") utilisera ce paramètre. C'est pourquoi les préférences de résolution etc. sont enregistrées entre les sessions. Ce n'est pas le JME ou le SDK lui-même qui s'en souvient, juste les réglages. – reden

+0

Vous avez absolument raison, reden. La meilleure solution, à mon avis, est de toujours configurer les paramètres et de ne pas se fier aux valeurs par défaut –