Sound abstellen

harrry

Erfahrenes Mitglied
Noch eine Frage: kann ich mit einem Buttondruck alle Sounds auf einer Website (also auch in später hinzugeladenen Filmen) ab- und wieder anstellen? "stopAllSounds" klappt ja anscheinend nur bei Sounds, die gerade abgespielt werden, nicht aber bei zB. Klicktönen auf Buttons. Also denk ich mir, man müßte irgendwie mit einem "Sound-aus-Button" die Lautstärke für den ganzen Film auf Null setzen können. Gibts denn sowas wie
PHP:
allSounds.setVolume(0);
?
 
Hi,

Diese Möglichkeit gibt es so nicht.

Eine Möglichkeit wäre, alle Soundobjekte dem selben MovieClip zuzuordnen - dann würde ein setVolume(0) sich auf alle diese Sounds auswirken.

Ansonsten bleibt Dir nichts anderes übrig, als manuell alle Sounds in allen Filmen durchzulaufen. Wenn Du nicht weißt, welche Unterfilme mit welchen Sounds u.U. geladen werden, könntest Du den Objektbaum rekursiv durchlaufen und nach Soundobjekten suchen.

Auf Zeitleistensounds hast Du mit AS sowieso keinen direkten Zugriff (wobei ich aus dem Stand nicht genau weiß, ob diese vielleicht auf Transformationen von Soundobkten reagieren, die dem selben MovieClip (s.o.) zugeordnet sind).

Gruß
.
 
Hi,

eine einfache Funktion zum Durchlaufen des gesamten Dokuments wäre folgende:
Code:
function killSounds(obj) {
	if (obj.treeParsing) return; // Selbstreferenzierung berücksichtigen
	trace("parsing: " + obj);
	obj.treeParsing = true;
	for (var i in obj) {
		if (typeof(obj[i]) == "object") {
			trace("  muting: " + i);
			obj[i].setVolume(0);
		} else if (typeof(obj[i]) == "movieclip") {
			killSounds(obj[i]);
		}
	}
	delete obj.treeParsing;
}
Bei allen Objekten vom typ "Object" wird versucht, per setVolume(0) einen vermeintlichen Sound stummzuschalten. Aufruf:
Code:
killSounds(_root);

Gruß
.
 
Aha, interessant. Hab jetzt mal das Script aufs erste Schlüsselbild in _root gelegt und den Aufruf auf einen Button, aber noch gehts nicht. Muss ich da noch was anpassen?

Mein Klick-Sound, den ich auf Knopfdruck loswerden will, ist (verknüpft als "tak") in der Bilbliothek des Hauptfilms.

Auf _root liegt das da:
PHP:
function playSound() { 
      	myKlang = new Sound(this);
      	myKlang.attachSound("tak");
      	myKlang.start(0, 1);
      }
in den hinzugeladenen Filmen wird das "tak" dann mit
PHP:
on (rollOver) {
      	_level0.playSound();
aufgerufen.
 
Was geht nicht: Das Abspielen dieses Sounds oder meine Methode? Wenn letzteres: Wie sieht denn der Aufruf aus?

Meine Funktion killSounds durchläuft allerdings nur Objekte und MovieClips - Filme, die in Stufen per loadMovieNum geladen wurden, werden nicht berücksichtigt. Du müsstest sie für alle verwendeten Stufen einzeln aufrufen.

Gruß
.
 
Naja, ich hab dein kill-Script auf die Hauptzeitleiste gepackt und das
PHP:
 killSounds(_root);
auf einen Button gelegt... geht aber nicht, auch nicht mit dem Sound im Hauptfilm...
 
... bei mir schon.

Poste bitte mal Deine Datei.

Gruß

P.S.: Wenn Du einen Sound mit "new Sound()" erstellst, nachdem die Funktion killSounds() aufgerufen wurde, hat diese natürlich keinen Effekt: Auf Sounds, die erst in der Zukunft existieren, kannst Du nicht zugreifen. ;)
.
 
Naja - das ist es wahrscheinlich, ich hab zwar den "newsound"-code VOR Deinem kill-Script, aber aufgerufen werden die Töne natürlich erst bei Buttondruck.

Einzige Lösung also: zweites Buttonset ohne Töne erstellen und dann dahin bei Bedarf wechseln?

Lg
 
Nö:

Erstelle Deine Soundobjekte einfach zu Beginn ohne Ereignis. Beim Klick auf die Buttons reicht es doch, die Sounds dann mit start() abzuspielen. ;)

Gruß
.
 

Neue Beiträge

Zurück