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