# Musikwechsel



## Boardwurm (12. Mrz 2015)

Hallo.

Ich habe hier wieder einmal ein kleines Problem mit meinem Spiel. Dazu:

Es spielt während des Spiels eine Hintergrundmusik. Wenn das Spiel verloren wird, kommt eben ein alert, der sagt, dass so und so viele Punkte erreicht wurden und ob man das Spiel fortsetzen möchte. Klickt man hier auf ja und startet ein neues Spiel, soll eigentlich die Spielmusik wieder beginnen und die "Alert"-Musik beendet werden, was aber bei mir nicht richtig funktioniert, denn die "Alert"-Musik stoppt zwar, aber die Spielmusik fängt nicht wieder an zu spielen (trotz backSound.start()). Ich habe mal einen Teil meiner MainActivity angehangen, vielleicht sieht jemand das Problem auf Anhieb!


```
public class MainActivity extends ActionBarActivity {
    GLSurfaceView frSurfaceView;
    ShipRenderer frRenderer;
    MediaPlayer backSound;
    MediaPlayer backSound2;
    SoundPool gameSounds;
    int soundIds[] = new int[5];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        frSurfaceView=new shipSurfaceView(this);
        setContentView(frSurfaceView);
        registerReceiver(new broadcastReceiver(), new IntentFilter("showAlert"));
        backSound = MediaPlayer.create(this, R.raw.backsound);
        backSound.setLooping(true);
        backSound.setVolume(0.7f, 0.7f);
        backSound2 = MediaPlayer.create(this, R.raw.backsound2);
        backSound2.setLooping(true);
        backSound2.setVolume(0.7f, 0.7f);
        backSound.start();
        gameSounds = new SoundPool(5,AudioManager.STREAM_MUSIC,0);
        soundIds[0] = gameSounds.load(this, R.raw.crash,1);
        soundIds[1] = gameSounds.load(this, R.raw.rebel,2);
        soundIds[2] = gameSounds.load(this, R.raw.addlife,3);
        soundIds[3] = gameSounds.load(this, R.raw.chewie,4);
        soundIds[4] = gameSounds.load(this, R.raw.x2,5);



    }

    @Override
    protected void onStop() {
        backSound.stop();
        backSound2.stop();
        super.onStop();
    }

    public class broadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent){
            if(intent.getAction() == "showAlert") showAlert();
        }

    }

    public void showAlert() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this); //Erzeugen des Punktefenster
        backSound.stop();
        backSound2.start();
        builder.setMessage("Du hast " + (int)frRenderer.level.points + " Punkte erreicht. Neuer Versuch?");
        builder.setCancelable(false);

        builder.setPositiveButton("Ja, die Macht ist stark in mir...", new DialogInterface.OnClickListener() {
            @Override

            public void onClick(DialogInterface dialog, int which) {
                backSound2.stop();

                float shipCenter = frRenderer.ship.vertices[5] + ((frRenderer.ship.vertices[1] - frRenderer.ship.vertices[5]) / 2);
                frRenderer.ship.move(-0.8f - shipCenter - (frRenderer.ship.jumping ? 0.07f : 0f)); //setzt Schiff an Anfang zurück
                frRenderer.level.lives = 3; //3 Leben
                frRenderer.level.points = 0.0f;
                frRenderer.level.setPoints(0.0f);
                frRenderer.fighters.speed = 1.0f;
                frSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
                frRenderer.fighters.lastMoveTime = System.nanoTime();

                backSound.start();


            }
        });

        builder.setNegativeButton("Nein, doofes Spiel...", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                System.exit(0);
            }
        });

        AlertDialog alert = builder.create();
        alert.show();
    }[/Java] 

Wäre echt super, wenn wir jemand unter die Arme greifen könnte!:oops:

Beste Grüße
```


----------



## Flo. (12. Mrz 2015)

Das Problem hatte ich auch einmal
Lösung:
Backsound.stop zu Backsound.pause

Also du pausierst es einfach dann kannst du es mit der .start methode weiterlaufen lassen


----------



## Boardwurm (12. Mrz 2015)

Hi.

Danke für die Antwort, hatte es jetzt schon selbst hinbekommen, bin nur noch nicht dazu gekommen, die Lösung zu posten!

Falls es noch interessant ist, ich lasse mit backSound.seekTo(0) die Musik auch wieder von vorn spielen. Ist zwar Kosmetik, aber ich fand es klang komisch, als die Musik, obwohl das Spiel ja vorbei war, an der selben Stelle weiterspielte wo sie aufgehört hatte, nachdem man "Neuer Versuch" geklickt hat.:-D

Danke trotzdem für deine Hilfe!

Viele Grüße


----------



## RalleYTN (9. Apr 2015)

Eine von meinen selbstgeschriebenen Bibleothecken könnte dir weiterhelfen: https://www.youtube.com/watch?v=r7iZaiMtmgg


----------

