2012-06-06 3 views
0

Ok, voici mon code: commandeMon tutoriel jMonkey légèrement modifié a un problème de pointeur NULL?

package test; 


import java.util.ArrayList; 
import java.util.Vector; 

import com.jme3.app.SimpleApplication; 
import com.jme3.system.AppSettings; 


import com.jme3.material.Material; 
import com.jme3.math.Vector3f; 
import com.jme3.scene.Geometry; 
import com.jme3.scene.shape.Box; 
import com.jme3.math.ColorRGBA; 
import com.jme3.scene.Node; 


public class test extends SimpleApplication { 


    public static void main(String[] args){ 

     AppSettings settings = new AppSettings(false); 
     settings.setResolution(640,480); 
     test app = new test(); 

     app.setSettings(settings); 
     app.start(); 

    } 


    @Override 
    public void simpleInitApp() { 

     ArrayList<Geometry> geos = new ArrayList<Geometry>(); 

     for (int count = 0; count <= 5; count++) { 

      double x = 10; 
      double y = 10; 
      double z = 10; 

      Box  box = new Box(new Vector3f(count*10,count*10,count*10), (int)x, (int)y, (int)z); 
      Geometry geo = new Geometry("Box", box); 
      Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); 

      mat.setColor("Color", ColorRGBA.Blue); 
      geo.setMaterial(mat); 

      geos.add(geo); 

     } 

     /** Create a pivot node at (0,0,0) and attach it to the root node */ 
     Node pivot = new Node("pivot"); 
     rootNode.attachChild(pivot); // put this node in the scene 

     /** Attach the two boxes to the *pivot* node. */ 
     for(Geometry g : geos) { 
      pivot.attachChild(g); 
     } 

     /** Rotate the pivot node: Note that both boxes have rotated! */ 
     pivot.rotate(.4f,.4f,0f); 

    } 




} 

erreurs sur le app.start() indiquant qu'il est une exception de pointeur NULL. Comment l'application peut-elle être un pointeur nul lorsque la ligne avant ne commet pas d'erreur? Je suis perdu quant à ce qui ne va pas. HISTOIRE: Je dois être capable de créer un rendu 3D pour mon travail de boîtes simples. J'ai besoin de charger les éléments du modèle d'une autre procédure, puis de les parcourir et de les dessiner. J'utilise jMonkey parce qu'ils voulaient initialement Xj3D mais je n'ai pas trouvé comment le faire fonctionner. Au moins cela je peux obtenir le tutoriel fonctionnant mais quand je l'ai modifié pour boucler et créer plusieurs boîtes maintenant j'obtiens les problèmes de pointeur nul.

Merci à l'avance! JH

EDIT:

Voici la sortie de la console:

Exception in thread "main" java.lang.NullPointerException 
    at com.jme3.system.JmeDesktopSystem.showSettingsDialog(JmeDesktopSystem.java:73) 
    at com.jme3.system.JmeSystem.showSettingsDialog(JmeSystem.java:108) 
    at com.jme3.app.SimpleApplication.start(SimpleApplication.java:127) 
    at test.test.main(test.java:34) 
+0

Quelle est la trace de votre pile? Il se peut que quelque chose ait été mis à null et ne soit appelé que lorsque vous démarrez votre application, c'est pourquoi vous le verriez sur cette ligne plutôt que l'application elle-même étant nulle. – n00begon

+0

Est-ce ce que vous vouliez dire par trace de pile? Si non, comment l'obtenir? –

+0

Il semble donc que le pointeur null soit sur 'JmeDesktopSystem.showSettingsDialog'. Le tutoriel que vous avez modifié a-t-il fonctionné? Si oui avez-vous supprimé une ligne sur une boîte de dialogue de paramètres? – n00begon

Répondre

0

Ok, changer

AppSettings settings = new AppSettings(false); 

à

AppSettings settings = new AppSettings(true); 

fixe mon problème. Maintenant, pour comprendre pourquoi le faux n'a pas fonctionné.

+0

avez-vous déjà vu cette page?: Http://hub.jmonkeyengine.org/javadoc/ et peut-être même celle-là?: Https://code.google.com/p/jmonkeyengine/source/browse/trunk/engine/ src/core/com/jme3/system/AppSettings.java? r = 10615 ne pas oublier, vous avez la puissance de Java opensource! – noncom

0

False ne charge pas les paramètres par défaut, ce qui signifie que vous devez les définir tous manuellement. C'est probablement la raison de la NPE. Pour masquer la boîte de dialogue des paramètres, utilisez

app.setShowSettings(false);