Libgdx-Bildschirme sind nicht vertauschen
Ich bin neu in Libgdx und ich war schrieb eine Klasse, die erweitert die Game-Klasse, die Sache ist die, dass die setScreen () - Methode von Spiel ist nicht der Austausch der Bildschirme, denn nachdem ich den Bildschirm mein Spiel immer noch macht nur das, was in der render-Methode der game-Klasse und nicht das, was in der render-Methode der screen-Klasse. Dies ist der code:
Wenn ein Lauf diesen code bekomme ich nur einen roten Bildschirm, obwohl ich ändern Bildschirme, wenn der Benutzer berührt(Klicks) der Bildschirm
class myGame extends Game
{
GameScreen myOtherScreen;
public void create()
{
//create other screen
myMenuScreen = new GameScreen();
}
public void render(float delta)
{
//change screens if screen touched
if(Gdx.input.justTouched())
setScreen(myOtherScreen);
//render red screen
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
}
.
. //other methods
.
}
//======= Screen Class ========
public class GameScreen implements Screen
{
@Override
public void render(float delta)
{
//render green screen
Gdx.gl.glClearColor(0, 1, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
}
.
. //other methods
.
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass Sie nicht mit dem Spiel richtig Klasse. Sollte man nicht Rendern da, das die screens " Aufgabe.
Sollten Sie sich die libgdx-Bildschirm und Spiel Klassen-wiki-Seite.
Die Nutzung sollte irgendwo so:
haben und einen RedScreen wie diese:
und habe einen GreenScreen wie diese:
habe das problem gefunden, die Lösung ist nicht, um die render-Methode aus der Klasse Spiel in der Tat, die Sie tatsächlich HABEN, um ES ZU LÖSCHEN von der Klasse glauben Sie mir, Sie haben zu tun, alle render mehr in den anderen Bildschirm-Klassen.
Fand ich die Ursache. Eigentlich müssen Sie
super.render()
in Ihrem Spielrender()
Methode, bevor Sie andere Dinge im Spiel. Wenn nicht, wird die Methode render, die Sie overrided nicht nennen den Bildschirm istrender()
Methode.BTW: Die beste Praxis ist es, rendering, Dinge mit Klasse Bildschirm.
Beachten Sie: Auch eine leere
render()
im Spiel wird dieses Problem verursacht. So löschen Sierender()
in Ihrem Spiel oder addsuper.render()
im es.