gpt4 book ai didi

java - LibGDX 加载屏幕不工作

转载 作者:太空宇宙 更新时间:2023-11-04 13:04:44 25 4
gpt4 key购买 nike

我有一段代码用于在 java 中的 LibGDX 游戏上加载屏幕:

public class LoadingScreen extends AbstractScreen {

private Stage stage;

private Image logo;
private Image loadingFrame;
private Image loadingBarHidden;
private Image screenBg;
private Image loadingBg;

private float startX, endX;
private float percent;

private Actor loadingBar;

public LoadingScreen(BloodyMess game) {
super(game);
}

@Override
public void show() {
System.out.println("3");

Constants c = new Constants();
// Tell the manager to load assets for the loading screen
game.manager.load("data/loading.pack", TextureAtlas.class);
// Wait until they are finished loading
game.manager.finishLoading();

// Initialize the stage where we will place everything
stage = new Stage();

// Get our textureatlas from the manager
TextureAtlas atlas = game.manager.get("data/loading.pack", TextureAtlas.class);

// Grab the regions from the atlas and create some images
logo = new Image(atlas.findRegion("libgdx-logo"));
loadingFrame = new Image(atlas.findRegion("loading-frame"));
loadingBarHidden = new Image(atlas.findRegion("loading-bar-hidden"));
screenBg = new Image(atlas.findRegion("screen-bg"));
loadingBg = new Image(atlas.findRegion("loading-frame-bg"));

// Add the loading bar animation
Animation anim = new Animation(0.05f, atlas.findRegions("loading-bar-anim"));
anim.setPlayMode(PlayMode.LOOP_REVERSED);
loadingBar = new LoadingBar(anim);

// Or if you only need a static bar, you can do
// loadingBar = new Image(atlas.findRegion("loading-bar1"));

// Add all the actors to the stage
stage.addActor(screenBg);
stage.addActor(loadingBar);
stage.addActor(loadingBg);
stage.addActor(loadingBarHidden);
stage.addActor(loadingFrame);
stage.addActor(logo);

// Add everything to be loaded
System.out.println("6");
c.guy_1_face = new Texture(Gdx.files.internal("guy_1_face.png"));
}

@Override
public void resize(int width, int height) {
// Set our screen to always be XXX x 480 in size
width = 480 * width / height;
height = 480;
stage.getViewport().update(width, height, false);

// Make the background fill the screen
screenBg.setSize(width, height);

// Place the logo in the middle of the screen and 100 px up
logo.setX((width - logo.getWidth()) / 2);
logo.setY((height - logo.getHeight()) / 2 + 100);

// Place the loading frame in the middle of the screen
loadingFrame.setX((stage.getWidth() - loadingFrame.getWidth()) / 2);
loadingFrame.setY((stage.getHeight() - loadingFrame.getHeight()) / 2);

// Place the loading bar at the same spot as the frame, adjusted a few
// px
loadingBar.setX(loadingFrame.getX() + 15);
loadingBar.setY(loadingFrame.getY() + 5);

// Place the image that will hide the bar on top of the bar, adjusted a
// few px
loadingBarHidden.setX(loadingBar.getX() + 35);
loadingBarHidden.setY(loadingBar.getY() - 3);
// The start position and how far to move the hidden loading bar
startX = loadingBarHidden.getX();
endX = 440;

// The rest of the hidden bar
loadingBg.setSize(450, 50);
loadingBg.setX(loadingBarHidden.getX() + 30);
loadingBg.setY(loadingBarHidden.getY() + 3);
}

@Override
public void render(float delta) {
// Clear the screen
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
System.out.println("5");
if (game.manager.update()) { // Load some, will return true if done
// loading
System.out.println("4");
game.setScreen(new MainMenu(game));

}

// Interpolate the percentage to make it more smooth
percent = Interpolation.linear.apply(percent, game.manager.getProgress(), 0.1f);

// Update positions (and size) to match the percentage
loadingBarHidden.setX(startX + endX * percent);
loadingBg.setX(loadingBarHidden.getX() + 30);
loadingBg.setWidth(450 - 450 * percent);
loadingBg.invalidate();

System.out.println("2");

// Show the loading screen
stage.act();
stage.draw();
}

@Override
public void hide() {
// Dispose the loading assets as we no longer need them
game.manager.unload("data/loading.pack");
}
}

问题是它没有运行 MainMenu 屏幕,正如你所看到的,我在控制台中有一些带有数字的调试代码,它只输出 3,然后输出 6,但没有其他内容。谁能告诉我为什么它没有加载我的主菜单屏幕或运行代码中的其他任何内容?仅供引用,我没有写很多这个,我从这里得到的:https://github.com/Matsemann/libgdx-loading-screen/tree/libgdx-1.4.1-Deathsbreed

编辑:我将所有值都保存在一个名为 Constants 的文件中,所有内容都从那里加载。如果您需要更多信息,我将编辑 OP。

非常感谢,

卢克

最佳答案

正如评论中所见,您已经在 BloodyMess

@Override 
public void render() { }

渲染方法内部放置

super.render();

当您需要调用父类(super class)的渲染方法以处理抽象屏幕的渲染方法时,这将开始工作。

希望有帮助:)

关于java - LibGDX 加载屏幕不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34598197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com