Libgdx Desktop Launcher пустой

#java #libgdx

#java #libgdx

Вопрос:

Только начинаю разработку Libgdx и java-игр. Получил немного кода, чтобы попытаться написать спрайт-лист с движущейся анимацией, только что запустил его, поэтому не закончил, когда я пытаюсь запустить его, одиночный рисунок спрайта не запускается, ничего, что является настольным приложением, просто черным.

Desktop Launcher:

 package com.mkgame.game1.desktop;

import com.MKgames.OptionScreen;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.mkgame.game1.Game1;

public class DesktopLauncher extends Game1{
    public static void main (String[] arg) {
        LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
        cfg.title = "Game1";
        cfg.width = 960;
        cfg.height = 540;

        new LwjglApplication(new Game1 (), cfg);

    }
}
  

Основной класс java ‘Game1’:

 package com.mkgame.game1;

import com.MKgames.FarmerAsset;
import com.MKgames.OptionScreen;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class Game1 extends ApplicationAdapter {

    public OptionScreen game_screen;

    public void create() {
        FarmerAsset.load();
    }
}
  

Игровой экран:

 package com.MKgames;

import sun.java2d.loops.DrawGlyphListAA.General;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class OptionScreen implements Screen{

    GameMain game;
    OrthographicCamera camera;
    SpriteBatch batch;

    int farmerX;

    public OptionScreen(GameMain game){
        this.game = game;

        camera = new OrthographicCamera();
        camera.setToOrtho(true, 1920, 1080);

        batch = new SpriteBatch();

        farmerX = 960-85;

    }


    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0.95F, 0.95F, 0.95F, 0.95F);


        camera.update();
        generalUpdate();
        batch.setProjectionMatrix(camera.combined);

        batch.begin();
            batch.draw(FarmerAsset.farmer1, farmerX, 200);
        batch.end();


    }


    public void generalUpdate() {
        if(Gdx.input.isKeyPressed(Keys.A)||Gdx.input.isKeyPressed(Keys.LEFT)){
            farmerX -= 5;
        }
        else if(Gdx.input.isKeyPressed(Keys.D)||Gdx.input.isKeyPressed(Keys.RIGHT)){
            farmerX  = 5;   
        }

    }


    @Override
    public void show() {

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void dispose() {

    }

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

    }

    @Override
    public void hide() {

    }

}
  

Ответ №1:

Изменить

 public class Game1 extends ApplicationAdapter {
  

Для

 public class Game1 extends Game {
  

Создайте экземпляр OptionScreen в игре:

 public OptionScreen game_screen;

public void create() {
    FarmerAsset.load();
    game_screen = new OptionScreen(this);
    setScreen(game_screen);
}
  

И это должно быть хорошо.

Комментарии:

1. просто попробовал это, но я получаю сообщение об ошибке ‘new OptionScreen (this);’: конструктор OptionScreen (Game1) не определен

2. Подождите секунду, что такое GameMain? Это должно быть Game1 в соответствии с вашей текущей иерархией классов.

3. Кроме того, пожалуйста, убедитесь, что вы утилизируете SpriteBatch с помощью функции dispose() в игре.

4. Извините, я не понимаю, где следует изменить GameMain?

5. На экране опций. Я даже не знаю, что такое GameMain.