Problem mit Persiestenten objekt

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit Persiestenten objekt

    Habe folgendes Problem:

    Ich habe ein Objekt namens Titelmusik das Objekt ist Persistent weil die Musik in jedem Raum abgespielt werden soll.

    In diesem Objekt hatte ich ganz am Anfang einfach nur das er denn Titel abspielen soll.

    Jetzt habe ich aber im Objekt folgenden Code:

    GML-Quellcode

    1. {
    2. if (global.Laut1=1)
    3. sound_stop(sound_Titelmusik);
    4. else
    5. if (global.Laut1=0)
    6. sound_loop(sound_Titelmusik);
    7. }


    Hallo
    Der Code funktioniert auch, überall nur halt nicht bei diesem Objekt (das einzigste Persieste). Es wird einfach nichts abgespielt.

    was mache ich falsch?
    Meine Webseite: jesoftmedia.de
  • Erstmal:
    Der Code sieht ziemlich komisch aus, also von der Art der Formatierung...

    GML-Quellcode

    1. if (global.Laut1=1) sound_stop(sound_Titelmusik)
    2. if (global.Laut1=0) sound_loop(sound_Titelmusik);

    Wäre es so nicht einfacher? So eine Formatierung, wie die deines Code,
    habe ich noch nie gesehen.

    Zum Thema:
    Wann genau wird der Code ausgeführt?
    Schon im Room Start Event, oder?


    Mfg
    Diesel
  • Okay, dann ist der Fehler leicht zu finden. Jedesmal, wenn du sound_loop aufrufst, wird die Datei neu gestartet. Ergo, wirst du das lied nie hören, weil das Lied jeden Step von vorne beginnt. Probier mal Folgendes:

    GML-Quellcode

    1. if(global.Laut1=1)
    2. sound_stop(sound_Titelmusik);
    3. else
    4. if(!sound_isplaying(sound_Titelmusik))
    5. sound_loop(sound_Titelmusik);


    Die Funktion sound_isplaying gibt dir den wert True zurück, wenn du das Soundfile bereits abspielst.
    ...
  • Ersteinmal danke der code funktioniert jetzt habe ich aber eine weitere Frage


    Wie kann mann denn code

    GML-Quellcode

    1. if (global.Laut1=1) sound_stop(sound_Titelmusik)
    2. if (global.Laut1=0) sound_loop(sound_Titelmusik);


    Mit diesem verbinden:

    GML-Quellcode

    1. if mouse_check_button_pressed(mb_left)
    2. {
    3. sound_loop(sound_Feuer);
    4. }
    5. else
    6. if mouse_check_button_released(mb_left)
    7. {
    8. sound_stop(sound_Feuer);
    9. }


    das kann ich noch nicht ich weiß noch nicht wie man diese richtig verbinden muss.
    Meine Webseite: jesoftmedia.de
  • wenn sound feuer ein normaler sound ist, dann kannst du es einfach so machen:

    im step event:

    GML-Quellcode

    1. if ((mouse_check_button(mb_left)) and (!sound_isplaying(sound_Feuer)) and (global.Laut1=0))
    2. {
    3. sound_loop(sound_Feuer);
    4. }
    5. else
    6. [
    7. sound_stop(sound_Feuer);
    8. }
    ////////////////////////////////////////////////////////////////////////////////////////////////
  • wenn sound feuer ein normaler sound ist, dann kannst du es einfach so machen:

    im step event:


    GML-Quellcode

    1. if ((mouse_check_button(mb_left)) and (!sound_isplaying(sound_Feuer)) and (global.Laut1=0))
    2. {
    3. sound_loop(sound_Feuer);
    4. }
    5. else
    6. [
    7. sound_stop(sound_Feuer);
    8. }



    Scheint nicht so zu funktionieren der sound soll solange abgespielt werden wie die Linke maus taste gedrückt ist aber momentan funktioniert das zwar aber der sound stockt.
    Meine Webseite: jesoftmedia.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Max77771 ()

  • Max77771 schrieb:


    GML-Quellcode

    1. if ((mouse_check_button(mb_left)) and (!sound_isplaying(sound_Feuer)) and (global.Laut1=0))
    2. {
    3. sound_loop(sound_Feuer);
    4. }
    5. else
    6. [ // <- Hier ist übrigens ein Tippfehler!
    7. sound_stop(sound_Feuer);
    8. }



    Versuch's so:

    GML-Quellcode

    1. if ( ( mouse_check_button_pressed( mb_left ) ) && ( !sound_isplaying( sound_Feuer ) ) && ( global.Laut1 == 0 ) ){
    2. sound_loop(sound_Feuer);
    3. }
    4. if( !mouse_check_button( mb_left ) || global.Laut1 == 0 ){ // Man hätte hier auch mouse_check_button_released( ... ) nehmen können, allerdings könnte es Probleme geben, wenn man außerhalb des Fensters klickt.
    5. sound_stop(sound_Feuer);
    6. }


    PS: Hab den Code mal etwas "optimiert" ( von der Formatierung ).

    - Tobi97
  • Danke der code

    GML-Quellcode

    1. if ( ( mouse_check_button_pressed( mb_left ) ) && ( !sound_isplaying( sound_Feuer ) ) && ( global.Laut1 == 0 ) ){
    2. sound_loop(sound_Feuer);
    3. }
    4. if( !mouse_check_button( mb_left ) || global.Laut1 == 1 )/*musste noch von 0 zu 1*/{ // Man hätte hier auch mouse_check_button_released( ... ) nehmen können, allerdings könnte es Probleme geben, wenn man außerhalb des Fensters klickt.
    5. sound_stop(sound_Feuer);
    6. }


    Funktioniert.
    Meine Webseite: jesoftmedia.de