- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我实际上遇到了 libgdx 的问题。
打字游戏.java
public class TypingGame extends Game {
TypingGame game;
GameScreen gameScreen;
GameOverScreen gameOverScreen;
@Override
public void create() {
gameScreen = new GameScreen();
gameOverScreen = new GameOverScreen(game);
Texture.setEnforcePotImages(false);
setScreen(new GameScreen()); // Default screen : Gamescreen
}
}
我希望能够使用 setScreen 更改当前屏幕。这就是我所做的:
GameScreen.java
public class GameScreen implements Screen, InputProcessor{
private World world;
private WorldRenderer renderer;
private WorldController controller;
TypingGame game;
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0.5f, 0.1f, 0.1f, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
Timer.elapsedTime(delta);
renderer.render(delta);
controller.update(delta);
if(Player.health == 0) game.setScreen(new GameOverScreen(game)); // If the player died, switch to GameOverScreen
}
// And so on...
GameOverScreen.java
public class GameOverScreen implements Screen{
TypingGame game;
GameScreen gameScreen;
public GameOverScreen(TypingGame game){
this.game = game;
gameScreen = new GameScreen();
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0.5f, 0.1f, 0.1f, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
}
@Override
public void resize(int width, int height) {
}
@Override
public void show() {
}
@Override
public void hide() {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
}
}
我不明白为什么会出现此错误:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NullPointerException
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:113)
Caused by: java.lang.NullPointerException
这应该很容易使用,但我真正可以使用 setScreen 的唯一类是......TypingGame.java。
非常感谢您的帮助,感谢并为我糟糕的英语感到抱歉。
青色!
最佳答案
在您的 TypingGame 类中,您不会创建自身的新实例:
TypingGame game; //------------------ this!
...
gameOverScreen = new GameOverScreen(game); //----you don't pass the new "game", you pass "this"
您还必须对 GameScreen 执行相同的操作。
gameScreen = new GameScreen(this); //---like this
您收到 NPE 是因为您在 GameScreen 中尝试使用不存在的游戏。您需要使用“this”将 TypingGame 实例传递到 GameScreen,并将其存储在:
TypingGame game;
您的游戏屏幕。
另外,作为旁注(但非常重要!),您正在创建一个 GameScreen 实例和一个 GameOverScreen 实例,但每次您设置屏幕时都会创建一个新屏幕...
关于java - LIBGDX - SetScreen 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18037852/
我实际上遇到了 libgdx 的问题。 打字游戏.java public class TypingGame extends Game { TypingGame game; GameScreen gam
我有一个 GameScreen ,在关卡结束后,我将屏幕设置回 GameScreen 作为当用户点击重新启动按钮时重新启动。我执行此操作 this.setScreen(new GameScreen(g
我正在尝试在 iOS 13 中向外部连接的屏幕呈现自定义 View Controller 。我遵循了本教程: http://www.spazstik-software.com/blog/article
我有一个简单的菜单屏幕,其中有四个按钮和每个按钮上的事件监听器。在此监听器中,我执行 changeScreen() 方法,该方法通过调用 setScreen() 更改屏幕。屏幕更改没有问题,但为什么
我是一名优秀的程序员,十分优秀!