簡體   English   中英

如何在Scene2D libGDX中更改屏幕

[英]How to change Screens in Scene2D libGDX

我一直在谷歌搜索有關如何使用Scene2D使用LibGDX的多個屏幕的教程。 到目前為止,這是我在場景處理課中的內容,但我不知道從哪里開始。 我知道我必須對MainMenu.java的構造函數做一些事情,但我不知道它是什么。

到目前為止我得到了什么:

public class ScreenHandler extends Game{
    public MainMenu Main;
    @Override
    public void create() {
          Main= new MainMenu();
          setScreen(Main);

    }

}

我不喜歡讓我的屏幕課程與我的Game課程相結合。 我正在使用的方法是我所有游戲屏幕的抽象類,它有一個標志和功能,表示正在請求“下一個屏幕”。 然后我的Game類的render方法可以檢查該標志並相應地渲染一個新屏幕。

public class MyGame extends Game {

    // ...

    @Override
    public void create() {
        GameScreen screen1 = new GameScreen(); // extends AbstractScreen
        GameScreen screen2 = new GameScreen(); // extends AbstractScreen
        screen1.setNextScreen(screen2);
        screen2.setBackScreen(screen1);
    }

    @Override
    public void render() {
        AbstractScreen currentScreen = (AbstractScreen) getScreen();

        if (currentScreen.goBack) {
            setScreen(currentScreen.getBackScreen());
        } else if (currentScreen.goToNextScreen) {
            setScreen(currentScreen.getNextScreen());
        }
    }

在實踐中,我實際上不會實例化create方法中的所有屏幕,而是根據需要創建/處理屏幕的方法,但是,上面是一般概念的簡化。

然后各個屏幕負責根據需要設置goBackgoToNextScreen標志。

我知道這是舊的,但只是想指出接受的答案不會呈現; 剛剛被綁在這上面2小時......

// ...


@Override
public void render() {
    AbstractScreen currentScreen = (AbstractScreen) getScreen();

    if (currentScreen.goBack) {
        setScreen(currentScreen.getBackScreen());
    } else if (currentScreen.goToNextScreen) {
        setScreen(currentScreen.getNextScreen());
    }
}

如果你覆蓋Game的render()方法,你必須在Game子類中添加對super.render()的調用。

我發現這個鏈接可以解釋我需要什么! https://code.google.com/p/libgdx-users/wiki/ScreenAndGameClasses

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM