Sound ausfaden

Rollo

Erfahrenes Mitglied
Hallöchen zusammen,
ich habe ein kleines Problem. Und zwar geht es darum einen Sound auszufaden. Das Problem liegt darin, dass wenn ich getVolume ausgebe, gibt er die korrkten Volume-Werte aus. Das Paradoxe daran ist, dass setVolume auf dem Soundobjekt nicht funktioniert. Warum auch immer. Vielleicht seht ihr ja den Fehler in der Funktion. Ich kann ihn schon seit Stunden nicht finden.

Code:
function fadeaus() {
	var v = int(_root.sound_mc.sound_obj.getVolume());
	_root.sound_mc.onEnterFrame = function() {
		v = int(v - (4/3));
		if (v>0) {
			_root.sound_mc.sound_obj.setVolume(v);
		} else if (v<0) {
			Pause();
			delete this.onEnterFrame;
		}
	};
}

Grüße
 
Hi,

kann dir nicht wirklich helfen, da ich noch mit Flash MX arbeite, aber die else if- Anweisung dürfte fehlerhaft sein, denn der Sound kann eigentlich nie kleiner als 0 sein.
Ich würde wenn schon <= 0 einsetzen.

EDIT: Bzw. warum else if? Es reicht doch ein else.

Hast du mal die setVolume-Anweisung mit einem trace ausgeben lassen? Was kommt da für eine Fehlermeldung?
 
Zuletzt bearbeitet:
Ich dank Dir schon mal dafür. Den Fahler habe ich korregiert. Daran liegt es aber leider nicht, denn die Funktion Pause(), die aufgerufen wird wenn der Sound ausgefadet ist, wird aufgerufen. Genau das ist das komische daran. Es scheint alles zu funktionieren, nur das der Sound nicht leiser wird - pausieren tut er.

Gruß
 
Hi,

hab mir schon gedacht, dass es daran nicht liegt, aber schaden kann es ja nicht :)
Ich hab mal so ein Player erstellt, wo man mit einem Regler die Lautstärke einstellen kann. Ist im Prinzip die gleiche Funktion. Ich schau mal, wie ich das gelöst habe und melde mich wieder.

EDIT:
Also ich habe das Soundobjekt mit Flash MX so umgesetzt:

PHP:
//Auf Root 1. Schlüsselbild

function soundErzeugen(){
  s = new Sound(this);
  s.loadSound("test.mp3", true); 
  s.setVolume(100);
}

// Von einem Volumebutton aus habe ich mit

_root.s.getVolume();
oder
_root.s.setVolume(50);
zugreifen können

Dass bei dir getVolume() nicht geht, könnte vielleicht auch daran liegen, dass Flash den Sound noch nicht geladen hat. Da gibt es bei Flash MX folgende Möglichkeit:

PHP:
_soundbuftime = 5; //5 Sek, bis Sound spielt


VG
DJ Trancelight
 
Zuletzt bearbeitet:
Hallo,

micht dünkt eher die Wertreduktion der Variable v ein wenig unglücklich. Probier dich mal statt einer Subtraktion eine Mutiplikation mit 0.75, wobei du danach die Bedingung fürs Löschen des onEnterFrame-Loops < 1 verwenden müsstest.

Gruss
 
Zurück