Java Libgdx主菜单屏幕

Java Libgdx主菜单屏幕,java,android,libgdx,Java,Android,Libgdx,我正在努力学习使用libgdx框架。就像libgdx网站上的教程()所描述的那样,我试图设置一个小主菜单。我已经导入了所有需要的类,但在第29行总是出现错误:“MainMenuScreen无法解析为类型”。 以下是源代码: package com.me.mygdxgame; import java.awt.SplashScreen; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Game; impor

我正在努力学习使用libgdx框架。就像libgdx网站上的教程()所描述的那样,我试图设置一个小主菜单。我已经导入了所有需要的类,但在第29行总是出现错误:“MainMenuScreen无法解析为类型”。 以下是源代码:

package com.me.mygdxgame;

import java.awt.SplashScreen;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;



public class MyGdxGame implements ApplicationListener {
private OrthographicCamera camera;
private SpriteBatch batch;
private Texture texture;
private Sprite sprite;
private BitmapFont font;

    @Override
public void create() {      
    batch = new SpriteBatch();
    //Use LibGDX's default Arial font.
    font = new BitmapFont();
    this.setScreen(new MainMenuScreen(this));
}

@Override
public void dispose() {
    batch.dispose();
    texture.dispose();
}

@Override
public void render() {      
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    sprite.draw(batch);
    batch.end();
}

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

@Override
public void pause() {
}

@Override
public void resume() {
}

}

MainMenuScreen不是标准类,如果您在链接的教程中进一步阅读,您会看到他们创建了一个附加类“MainMenuScreen”,只需创建另一个名为“MainMenuScreen”的类,并将教程中的代码添加到该类中即可


如果这是您第一次使用java,您可能希望在使用一些外部库之前,先通过谷歌搜索一些java教程来了解java和oop的基本原理;)

您需要创建一个扩展libgdx游戏类的类

public class MainClass extends Game
public class MainMenuScreen implements Screen
然后在mainclass的创建方法中,必须设置屏幕

setScreen(new MainMenuScreen(this));
在mainmenuclass中,必须实现libgdx的screen类

public class MainClass extends Game
public class MainMenuScreen implements Screen
你必须做一个这样的构造函数

public MainMenuScreen(Game game) {
    // TODO Auto-generated constructor stub
    this.game = game;
    camera = new OrthographicCamera();
    camera.setToOrtho(false, scrw, scrh);//scrw is your screen width,scrh is screen height
    camera.update();
            batch = new SpriteBatch();
    Gdx.input.setInputProcessor(MainMenuScreen.this);}

我认为这将起作用…

要开始学习libGDX,请查看此项目:。也许它能帮助你迈出进入这个世界的第一步

你的基本概念不清楚。 要在单个应用程序中使用不同的屏幕,必须扩展
游戏

public class MyGdxGame extends Game implements ApplicationListener{}
要选择其他屏幕,请致电:

setScreen(new XYZScreen(this));
指的是
MyGdxGame
的对象


现在您必须创建一个新的XYZ名称类。然后在新屏幕上做你想做的任何事情。

如果你想使用类屏幕,你应该从类游戏中扩展mainclass 若您使用screen,则不能再使用applicationlistener,因为在screen中您已覆盖所有应用程序侦听器函数

您只需将应用程序侦听器中的代码移动到“MainMenuScreen”

然后将创建类Mainclass时的屏幕设置为“MainMenuScreen”

公共类MainClass扩展了游戏{

@Override
public void create() {
    setScreen(new MainMenuScreen());
}}

我实际上在一个小项目中使用了屏幕,这是我的一个屏幕的代码

package com.sample.Main;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class Mainmenu implements Screen {

    MainGame game;
    SpriteBatch batch;

    Mainmenu(MainGame g){
        game = g;
        batch = g.batch;
    }

    @Override
    public void show() {


    }

    @Override
    public void render(float delta) {

    }

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

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {


    }

    @Override
    public void hide() {


    }

    @Override
    public void dispose() {

    }

}
下面是运行屏幕的主要游戏代码:

package com.sample.Main;

import com.badlogic.gdx.Game;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class MainGame extends Game {
    SpriteBatch batch;
    Screen mainscreen;

    @Override
    public void create () {
        batch = new SpriteBatch();
        mainscreen = new Mainmenu(this);
        setScreen(mainscreen);
    }

    @Override
    public void render () {
        super.render();
    }

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

谢谢你的快速回答!我知道java是如何工作的,但我很长一段时间都没有用android做过一些事情:D.P.s.我不是以英语为母语的人,所以教程对我来说不是那么容易理解;)@BigT这实际上根本不是android特有的。Libgdx是一个跨平台的游戏引擎,你遇到的问题不是android relaTe.D.总是重新审视斯泰格特博客,你会很快理解系统:这似乎是一个很好的答案。如果你同意“BigT”,你应该考虑接受它。“接受并不意味着它是最好的答案,它只是意味着它对被问的人起作用。”-您是否从中创建了一个名为MainMenuScreen的类来实现Screen?