java - J-猴子子类

标签 java nullpointerexception jmonkeyengine

我是Java和J-monkey的新手,我正在尝试制作Java游戏,因此对于菜单,我做了一个枚举,以便可以在我的任何状态之间切换,但我想缩短主文件的长度,以便易于阅读,因此我在制作子类时遇到的问题是,在运行游戏时,它给我一个错误,提示“线程中抛出了未捕获的异常[LWJGL Renderer Thread,5,main] NullPointerException”,我认为这个问题一定是有原因的管道在下面这是我的主文件的代码:

package mygame;

import com.jme3.app.SimpleApplication;
import com.jme3.font.BitmapText;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Spatial;
import com.jme3.scene.Geometry;

import com.jme3.input.*;
import com.jme3.input.controls.*;

public class Main extends SimpleApplication {

//GameStates
enum GameState{Logo, Menu, Playing, Option};
GameState gameState = GameState.Logo;

//Class Variables
Logo logo;


public Main() {

logo = new Logo();

}

public static void main(String[] args) {
    Main app = new Main();
    app.start();
}

public static void logo(String[] args) {
    Logo app = new Logo();
    app.start();
}

@Override
public void simpleInitApp() {
    //Load
    flyCam.setMoveSpeed(20);
    if(gameState == GameState.Logo){
        logo.simpleInitApp();
    }
}

@Override
public void simpleUpdate(float tpf) {

}

@Override
public void simpleRender(RenderManager rm) {
    //TODO: add render code
    //Load
    if(gameState == GameState.Logo)
    {

    }

}
}


这是我的徽标子类:

package mygame;

    import com.jme3.app.SimpleApplication;
    import com.jme3.renderer.RenderManager;
    import com.jme3.scene.Spatial;

    public class Logo extends SimpleApplication {

    @Override
    public void simpleInitApp() {
    Spatial Logo_Model = assetManager.loadModel("Models/Teapot/Logo.obj");
    rootNode.attachChild(Logo_Model);
    }

    public void simpleRender(RenderManager rm) {
    //Load

    }
    }


我已经向下移动了我认为正在解决问题的堆栈跟踪,因此您不必阅读所有的Exception,只需向下滚动

完整异常堆栈跟踪:
2013年11月9日上午11:29:32 java.util.prefs.WindowsPreferences
警告:无法在根0x80000002上打开/创建首选项根节点Software \ JavaSoft \ Prefs。 Windows RegCreateKeyEx(...)返回了错误代码5。
    2013年11月9日,上午11:29:49 com.jme3.system.JmeDesktopSystem初始化
   INFO:在jMonkeyEngine 3.0.0 Beta上运行
   2013年11月9日11:29:49 com.jme3.system.Natives extractNativeLibs
   INFO:提取目录:C:\ Users \ Zero \ Documents \ Basic_Test_menu
   2013年11月9日,上午11:29:49 com.jme3.system.lwjgl.LwjglAbstractDisplay运行
   INFO:使用LWJGL 2.8.4
   2013年11月9日上午11:29:49 com.jme3.system.lwjgl.LwjglDisplay createContext
   信息:选定的显示模式:800 x 600 x 0 @ 0Hz
   2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
   信息:适配器:igdumd64
   2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
   信息:驱动程序版本:空
   2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
   INFO:供应商:Intel
   2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
   信息:OpenGL版本:3.1.0-内部版本9.17.10.2932
   2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
   INFO:渲染器:Intel(R)HD Graphics
   2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo
   信息:GLSL版本:1.40-Intel Build 9.17.10.2932
   2013年11月9日,上午11:29:50 com.jme3.system.lwjgl.LwjglTimer
   INFO:计时器分辨率:每秒1,000个刻度
   2013年11月9日上午11:29:50 com.jme3.renderer.lwjgl.LwjglRenderer初始化
   信息:上限:[FrameBuffer,FrameBufferMRT,FrameBufferMultisample,OpenGL20,OpenGL21,OpenGL30,OpenGL31,ARBprogram,GLSL100,GLSL110,GLSL120,GLSL130,GLSL140,VertexTextureFetch,TextureArray,FloatTexture,FloatColorBuffer,FloatFlostateded,FloatFloatstatedBuffer, ,VertexBufferArray,Multisample,PackedDepthStencilBuffer]
    2013年11月9日上午11:29:50 com.jme3.asset.AssetConfig loadText
    警告:找不到加载器com.jme3.scene.plugins.blender.BlenderModelLoader
    2013年11月9日,上午11:29:50 com.jme3.asset.DesktopAssetManager
    INFO:创建了DesktopAssetManager。
    2013年11月9日11:29:50 com.jme3.renderer.Camera
    信息:摄像机已创建(W:800,H:600)
    2013年11月9日11:29:50 com.jme3.renderer.Camera
    信息:摄像机已创建(W:800,H:600)
    2013年11月9日,上午11:29:50 com.jme3.input.lwjgl.LwjglMouseInput初始化
    信息:创建鼠标。
    2013年11月9日上午11:29:50 com.jme3.input.lwjgl.LwjglKeyInput初始化
    信息:键盘已创建。
    2013年11月9日上午11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
    INFO:AudioRenderer支持64个通道
    2013年11月9日上午11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
    INFO:音频效果扩展版本:1.0
    2013年11月9日上午11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
    信息:音频最大辅助发送:4
    2013年11月9日11:29:51 com.jme3.material.MaterialDef
    INFO:加载的材质定义:未着色
    2013年11月9日11:29:51 com.jme3.scene.Node attachChild
    INFO:子级(BitmapFont)附加到此节点(空)
    2013年11月9日11:29:51

AM com.jme3.app.Application handleError SEVERE: Uncaught exception
   thrown in Thread[LWJGL Renderer Thread,5,main]

   java.lang.NullPointerException
at mygame.Logo.simpleInitApp(Logo.java:17)
at mygame.Main.simpleInitApp(Main.java:46)
at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:225)
at                com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:130)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:207)
at java.lang.Thread.run(Thread.java:722)


    Nov 09, 2013 11:29:51 AM com.jme3.renderer.lwjgl.LwjglRenderer cleanup
    INFO: Deleting objects and invalidating state
    Nov 09, 2013 11:29:51 AM com.jme3.input.lwjgl.LwjglMouseInput destroy
    INFO: Mouse destroyed.
    Nov 09, 2013 11:29:51 AM com.jme3.input.lwjgl.LwjglKeyInput destroy
    INFO: Keyboard destroyed.
    Nov 09, 2013 11:29:51 AM com.jme3.system.lwjgl.LwjglAbstractDisplay deinitInThread
    INFO: Display destroyed.

最佳答案

问题是assetManager在该时间点为空。要么为时已晚分配它,要么根本忘记分配它。

关于java - J-猴子子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19872155/

相关文章:

java - Android:点击按钮时的新 View

java - Appium、Java 和 Testng - 查找 NullPointerException 的原因

JAVA - JMonkeyEngine - 获取场景信息

java - Spring的DataBinder是如何用来转换普通参数值的?

java - AOP切入点未注册

Android Api 23 更改导航 View headerLayout textview

java - 如何访问 JMonkeyEngine3 中 BetterCharacterControl 对象的 Vector3f 位置?

java - 在 Java ArrayList 上保存文件夹的更改

android - Android 中的触控计算器