LableStyle font missing

I got this class for my game and I want the Label recorder to be written with CourierNew. The .fnt and .png files are located in the assets folder.

package com.joelbrun.jetskirider.screens;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Button;
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;

public class MainMenu implements Screen {

    private Stage stage;
    private Table table;
    private Label highscore;
    private Button startButton, removeAdsButton;
    private CheckBox muteCheckbox;
    private BitmapFont CourierNew;
    public int score = 0;

    @Override
    public void show() {
        stage = new Stage();
        table = new Table();
        table.setFillParent(true);
        CourierNew = new BitmapFont(Gdx.files.internal("CourierNew.fnt"), false);

        Button.ButtonStyle startButtonStyle = new Button.ButtonStyle();
        startButtonStyle.up = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("startButtonUp.png"))));
        startButtonStyle.down = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("startButtonDown.png"))));

        Button.ButtonStyle removeAdsButtonStyle = new Button.ButtonStyle();
        removeAdsButtonStyle.up = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("removeAdsButtonUp.png"))));
        removeAdsButtonStyle.down = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("removeAdsButtonDown.png"))));

        CheckBox.CheckBoxStyle muteCheckboxStyle = new CheckBox.CheckBoxStyle();
        muteCheckboxStyle.checkboxOn = new TextureRegionDrawable(new TextureRegion(new Texture("muteCheckboxChecked.png")));
        muteCheckboxStyle.checkboxOff = new TextureRegionDrawable(new TextureRegion(new Texture("muteCheckboxUnchecked.png")));

        Label.LabelStyle highscoreStyle = new Label.LabelStyle(CourierNew, Color.YELLOW);

        String formatted = Integer.toString(score);
        startButton = new Button(startButtonStyle);
        removeAdsButton = new Button(removeAdsButtonStyle);
        muteCheckbox = new CheckBox(null, muteCheckboxStyle);
        highscore = new Label(formatted, highscoreStyle);

        table.add(startButton);
        table.debug();
        stage.addActor(table);


    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0,0,0,1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        stage.act(delta);
        stage.draw();
    }

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

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void hide() {

    }

    @Override
    public void dispose() {
        stage.dispose();
    }
}

      

However, I always get the error:

06-27 14:44:55.157  15191-15235/com.joelbrun.jetskirider.android E/AndroidRuntime๏น• FATAL EXCEPTION: GLThread 78201
Process: com.joelbrun.jetskirider.android, PID: 15191
java.lang.IllegalArgumentException: Missing LabelStyle font.
        at com.badlogic.gdx.scenes.scene2d.ui.Label.setStyle(Label.java:77)
        at com.badlogic.gdx.scenes.scene2d.ui.Label.<init>(Label.java:71)
        at com.badlogic.gdx.scenes.scene2d.ui.TextButton.<init>(TextButton.java:46)
        at com.badlogic.gdx.scenes.scene2d.ui.CheckBox.<init>(CheckBox.java:41)
        at com.joelbrun.jetskirider.screens.MainMenu.show(MainMenu.java:51)
        at com.badlogic.gdx.Game.setScreen(Game.java:61)
        at com.joelbrun.jetskirider.screens.Splash$1.onEvent(Splash.java:38)
        at aurelienribon.tweenengine.BaseTween.callCallback(BaseTween.java:380)
        at aurelienribon.tweenengine.BaseTween.updateStep(BaseTween.java:521)
        at aurelienribon.tweenengine.BaseTween.update(BaseTween.java:424)
        at aurelienribon.tweenengine.TweenManager.update(TweenManager.java:166)
        at com.joelbrun.jetskirider.screens.Splash.render(Splash.java:48)
        at com.badlogic.gdx.Game.render(Game.java:46)
        at com.joelbrun.jetskirider.JetskiRider.render(JetskiRider.java:35)
        at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:422)
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1522)
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)

      

What's wrong? I've tried a lot already ... Hope someone can help

+3


source to share


1 answer


If you follow the trace you posted it will lead you to

com.badlogic.gdx.scenes.scene2d.ui.Label.setStyle(Label.java:77)

      

If you look at the code , you will see (in the method setStyle

):



if (style.font == null) throw new IllegalArgumentException("Missing LabelStyle font.");

      

What exception are you seeing. So the problem is that the object Style

given to initialize muteCheckbox

(which is muteCheckboxStyle

) has null

like it ' font

. This can be fixed fairly easily. muteCheckbox = new CheckBox(null, muteCheckboxStyle);

Initialize before calling muteCheckboxStyle

font

:

muteCheckboxStyle.font = CourierNew;

      

+1


source







All Articles