Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Slick2D getGraphics()返回null,出现null指针异常_Java_Nullpointerexception_Slick2d - Fatal编程技术网

Java Slick2D getGraphics()返回null,出现null指针异常

Java Slick2D getGraphics()返回null,出现null指针异常,java,nullpointerexception,slick2d,Java,Nullpointerexception,Slick2d,我正在努力让我的slick2d游戏渲染,但是container.getGraphics()返回null,我得到一个null指针异常。我使用以下命令检查是否是getGraphics()返回null: if (container.getGraphics()==null) return; 这修复了npe,但是我当然不能渲染任何东西 堆栈跟踪: Tue Sep 02 21:42:19 MDT 2014 INFO:Slick Build #237 Exception in thread "Thread-

我正在努力让我的slick2d游戏渲染,但是container.getGraphics()返回null,我得到一个null指针异常。我使用以下命令检查是否是getGraphics()返回null:

if (container.getGraphics()==null) return;
这修复了npe,但是我当然不能渲染任何东西

堆栈跟踪:

Tue Sep 02 21:42:19 MDT 2014 INFO:Slick Build #237
Exception in thread "Thread-1" java.lang.NullPointerException
    at com.nonuniversal.client.MenuState.render(MenuState.java:17)
    at org.newdawn.slick.state.StateBasedGame.render(StateBasedGame.java:199)
    at com.nonuniversal.client.Game.run(Game.java:33)
    at java.lang.Thread.run(Unknown Source)
请注意,LunaTopiClient在运行时需要用户名参数

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.SlickException;

public class LunatopiaClient{
    private String username;
    AppGameContainer container;
    Game game;

    public LunatopiaClient(String username) {

        this.username = username;

    }
    public static void main(String args[]) {

        if (args.length!=1) {
            System.out.println("Usage: java -jar <filename.jar> <username>");
            return;
        } else {
            LunatopiaClient lunatopiaClient = new LunatopiaClient(args[0]);
            lunatopiaClient.init();
        }

    }
    public void init() {

        try {
            game = new Game("");
            container = new AppGameContainer(game);
            container.setFullscreen(true);
            game.init(container);
            game.init();
        } catch (SlickException e) {
            e.printStackTrace();
        }

    }
    public Game getGame() {
        return game;
    }
    public String getUsername() {
        return username;
    }
}
门努斯特类

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;

public class MenuState extends BasicGameState{

    public void init(GameContainer container, StateBasedGame game)
            throws SlickException {

    }
    public void render(GameContainer container, StateBasedGame game, Graphics g)
            throws SlickException {
        g.drawString("Hello World", 0, 0);
    }
    public void update(GameContainer container, StateBasedGame game, int arg)
            throws SlickException {

    }
    public int getID() {
        return 0;
    }

}

编辑:拼写

不幸的是,您在一个非常非正统的庄园中配置了大量代码。首先,Slick2d将自动执行程序的线程,因此您不需要自己编写线程

您似乎也在调用不存在的方法,例如在游戏中未定义init(容器)。此外,您将容器存储为不需要的数据值,因此您将获得图形上下文的NPE


如果你刚刚开始使用Slick2d,我建议你看看Newboston关于如何开始的视频教程。否则,我相信您可能必须重新启动您的项目,因为它在当前状态下不可用。希望这能有所帮助:)

嘿,谢谢你的回答,我终于弄明白了,而且进展顺利!
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;

public class MenuState extends BasicGameState{

    public void init(GameContainer container, StateBasedGame game)
            throws SlickException {

    }
    public void render(GameContainer container, StateBasedGame game, Graphics g)
            throws SlickException {
        g.drawString("Hello World", 0, 0);
    }
    public void update(GameContainer container, StateBasedGame game, int arg)
            throws SlickException {

    }
    public int getID() {
        return 0;
    }

}