java - libgdx 的 NullPointerException

标签 java android nullpointerexception libgdx

我想使用下面的代码使文本出现在屏幕上,但是每当我运行这部分代码时,它都会给出错误 NullPointerException。

batch.begin();
    batch.draw(paper, pos.x, pos.y);
    batch.draw(trash, position.x, position.y);

     font.setColor(1.0f, 1.0f, 1.0f,1.0f);
     font.draw(batch, str, 25, 160);
            batch.end();

更准确地说,导致错误的代码部分是:

  batch.begin();
         font.setColor(1.0f, 1.0f, 1.0f,1.0f);
         font.draw(batch, str, 25, 160);
                batch.end();

如果需要的话,整个程序看起来像这样

package com.me.fixGame;

import java.util.Random;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;


import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Table;


public class fixGame implements ApplicationListener {
    SpriteBatch batch;
    SpriteBatch spriteBatch;
    Texture trash; 
    Texture paper;
    SpriteBatch spritebatch;
    Vector2 position;
    Vector2 size;
    Vector2 size2;
    Vector2 pos;
    Rectangle bounds;
    Rectangle bounds2;

    int score = 6;
    CharSequence str = "Hello World!";
    BitmapFont font;
    boolean collision = false;
    @Override
    public void create() {  

        spriteBatch = new SpriteBatch();
    trash = new Texture(Gdx.files.internal("data/trash.png"));
    paper = new Texture(Gdx.files.internal("data/paper1.jpg"));
    position = new Vector2(100, 50);
    pos = new Vector2(54, 14);
    batch = new SpriteBatch();


    size2 = new Vector2(trash.getWidth() ,trash.getHeight() );
    //size2.y = trash.getHeight();
    //size2.x = trash.getWidth();
    size = new Vector2(paper.getWidth() ,paper.getHeight());

    bounds= new Rectangle(pos.x, pos.y, size.x, size.y);
    bounds2= new Rectangle(position.x, position.y, size2.x, size2.y);

    }

    @Override
    public void dispose() {

    }
    public void update(){
        bounds.set(pos.x, pos.y, size.x, size.y);
        bounds2.set(position.x, position.y, size2.x, size2.y);

        position.x = position.x -2- Gdx.input.getAccelerometerX();
    }

    @Override
    public void render() {

        if(bounds.overlaps(bounds2)){
            System.out.println("good job");

        }else if(pos.y > 675){
            score= score-1;
            System.out.println("one point lost your score is "+ score);
        }


          update();
            Gdx.gl.glClearColor(1, 1, 1, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        pos.y=pos.y-12;
        if(pos.y<0){
            pos.y = 700;
            Random randomGenerator = new Random();
              pos.x = randomGenerator.nextInt(500);
        }


         if(position.x>400){
             position.x=position.x-30;
         }
         if(position.x<0){
             position.x=-position.x;
         }
        if(Gdx.input.isKeyPressed(Keys.D)){
            position.x= 10+position.x;
        }
        if(Gdx.input.isKeyPressed(Keys.A)){
            position.x= position.x-10;
        }
        batch.begin();
        batch.draw(paper, pos.x, pos.y);
        batch.draw(trash, position.x, position.y);

         font.setColor(1.0f, 1.0f, 1.0f,1.0f);
         font.draw(batch, str, 25, 160);
                batch.end();

    }

     @Override
    public void resize(int width, int height) {
    }

    @Override
    public void pause() {
    }

    @Override
    public void resume() {
    }
}

这是我遇到的异常:

Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.me.fixGame.fixGame.render(fixGame.java:113)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:206)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:113)

最佳答案

您需要在创建方法中实例化您的字体。

类似这样的事情:

BitmapFont font = new BitmapFont();

官方文档here .

关于java - libgdx 的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21872102/

相关文章:

java - JAXB 不使用 XmlRootElement 进行注释

java - 检索 JSONObject 的字段名称 - Java

java - 将非空键和值放入哈希表时出现 NullPointerException

java - Java 中冒泡排序的 Null Ptr 异常

java - 在 Java 中用 1..N 坐标表示玩家

android - 如何在 android 中更改我的操作栏文本颜色和字体大小

android - 如何获取上一个或下一个 View

android - 捕获相机预览以在 OpenCV 中使用。转换为 RGB 和灰色垫。 java 。安卓

java - TestNG异常: Cannot Instantiate class

java - 无法使用maven传递java编译器参数