title: LibGDX Loading Screen Not Working
body: <p>I have this piece of code for a loading screen on my LibGDX game in java:</p>
  
  <pre><code>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");
      }
  }
  </code></pre>
  
  <p>The problem is that it isn't running the MainMenu screen and as you can see I have some debugging code with numbers in the console, and it only outputs 3 and then 6, but nothing else. Can anybody tell me why it isn't loading my main menu screen or running anything else in the code? FYI I didn't write a lot of this, I got it from here: <a href="https://github.com/Matsemann/libgdx-loading-screen/tree/libgdx-1.4.1-Deathsbreed" rel="nofollow">https://github.com/Matsemann/libgdx-loading-screen/tree/libgdx-1.4.1-Deathsbreed</a></p>
  
  <p>EDIT: I have all of my values in a file called Constants, and everything loads from there. If you need any more info, I will edit the OP.</p>
  
  <p>Much Appreciated,</p>
  
  <p>Luke</p>