private void startLevel(String filename) { level = Level.loadLevel(filename); nextFootstep = 0; music = Gdx.audio.newMusic(Gdx.files.internal(level.getMusicFiles().poll())); music.play(); final GameScreen thisGameScreen = this; music.setOnCompletionListener( new OnCompletionListener() { @Override public void onCompletion(Music music) { music.dispose(); level.incrementCurrentSection(); String nextMusicName = level.getMusicFiles().poll(); if (!endingLevel) { if (nextMusicName != null) { Music nextMusic = Gdx.audio.newMusic(Gdx.files.internal(nextMusicName)); nextMusic.play(); nextMusic.setOnCompletionListener(this); thisGameScreen.music = nextMusic; } else { // End of level! // Play end of level sound // After it ends, load level 2 Music endSound = Gdx.audio.newMusic(Gdx.files.internal("endOfLevel.ogg")); endSound.play(); // final OnCompletionListener thisCompletionListener = // this; // this; endSound.setOnCompletionListener( new OnCompletionListener() { @Override public void onCompletion(Music music) { music.dispose(); startLevel("theme2.txt"); } }); } } } }); }