Problem mit if Abfrage

FlorianR

Erfahrenes Mitglied
Hallo Zusammen,

ich habe folgendes Problem.

Ich spiele einen Sound ab, sofern die globale Variable "soundsOff" 0 ist.
Drücke ich den "Sound off" Button, schaltet sich die Variable auf 1.

Ohne if Abfrage wiederholt sich der Sound immer wieder (durch intervall). Mit der if Abfrage ist dies allerdings nicht mehr der Fall :-/

PHP:
if(soundsOff == 0){
	bgSound.start(); // erstes abspielen
	function waitAndPlay():Void {
		bgSound.start();
	}
	setInterval(this, "waitAndPlay", verzoegerung); // Sound wiederholen
}

Ich freue mich auf eure Hilfe / Vorschläge!

Gruß,
Florian
 
Hi,

ich müsste den gesamten Code und die Filmstruktur sehen, um die Frage korrekt zu beantworten. So, wie er da steht, macht der Code keinen Sinn.

Gruß
.
 
Hallo Tobias,

die Fla. ist im Anhang (ohne Sounds).

Gruß,
Florian
 

Anhänge

  • 27654attachment.zip
    6,2 KB · Aufrufe: 10
Hi,

Du musst die Funktion "waitAndPlay" ausserhalb der IF-Abfrage definieren, oder eine benannte Funktion erstellen:

Code:
if(soundsOff == 0){
    bgSound.start(); // erstes abspielen
    var waitAndPlay = function() {
        bgSound.start();
    }
    setInterval(this, "waitAndPlay", verzoegerung); // Sound wiederholen
}

oder
Code:
function waitAndPlay() {
    bgSound.start();
}

if(soundsOff == 0){
    bgSound.start(); // erstes abspielen
    setInterval(this, "waitAndPlay", verzoegerung); // Sound wiederholen
}

Die If-Abfrage als solche macht an dieser Stelle übrigens keinen Sinn, da die Bedingung immer zugrifft (Du setzt ja "soundsOff" unmittelbar vorher auf 0).

Wenn Du die Soundabfolge auch irgendwann einmal stoppen willst, musst Du das Intervall aber in einer Intervall-ID speichern, damit Du es auch wieder löschen kannst.

Gruß
.
 
Ich habe es nun so gemacht wie im letzten Abschnitt von Dir, nur das ich den intervall noch in eine globale Variable getan habe:

PHP:
_global.iv = 0;
function waitAndPlay() {
    bgSound.start();
}

if(soundsOff == 0){
    bgSound.start(); // erstes abspielen
    iv = setInterval(this, "waitAndPlay", verzoegerung); // Sound wiederholen
}

Beim Soundbutton habe ich folgendes:

PHP:
stopAllSounds();
soundsOff = 1;
clearInterval(iv);

er unterbricht kurz den Sound, wiederholt sich aber sofort wieder...
Ich glaube, ich habe das Prinzip noch nicht ganz verstanden...

Gruß,
Florian
 
Hi,

Lass Dir "iv" mal per trace ausgeben - bekommst Du einen Wert?

Verwende zudem statt "stopallsounds" die stop-Methode des Sound-Objekts.

Gruß
.
 
Vor dem setInterval ist "iv" 0 und danach "1". Nach dem man den Button betätigt hat, ist iv wieder 0 (so sollte es ja eigentlich sein?!).

Wenn ich "bgSound.stop();" benutze, passiert nichts.

Ich freue mich auf deine Antwort.
 
Wenn ich "bgSound.stop();" benutze, passiert nichts.
Du musst von Deinem Button aus auch den korrekten Pfad zum Sound angeben (je nach Setup z.B. _parent oder _root).

Poste bitte nochmal Deine Datei, denn eigentlich sollte es mit dem Löschen des Intervalls getan sein.

Gruß
.
 
Hier nochmal die Datei, danke für deine Mühe - vllt. siehst Du den Fehler so besser.
 

Anhänge

  • 27657attachment.zip
    7,1 KB · Aufrufe: 9
Hi,

definiere die Variable "iv" nicht als global, sondern stinknormal auf der Hauptzeitleiste und gib den entsprechenden Pfad bei clearInterval an:
Code:
clearInterval(_root.iv);

Grund: Die Methode clearInterval verschafft sich internen Zugriff auf die Variable, was bei globalen Variablen mit Schreibzugriff nicht möglich ist. Diese Tatsache war allerdings auch neu für mich. ;)

Gruß
.
 
Zurück