sound loop funktioniert nicht

janoe

Grünschnabel
halloechen,

habe folgenden code geschrieben:

klaus = new Sound();
klaus.loadSound("02-toilet.mp3", true);
klaus.setVolume(10);
klaus.start(1, 99);


der hat auch schon mal funktioniert. in meinem neuen Projekt wird zwar der sound abgespielt, aber nicht geloopt, was hier ja 99x passieren sollte. Kann mir jemand weiterhelfen, woran es liegen koennte?Vielleicht hatte jemand schon das gleiche problem.
 
... schau dir in der Referenz mal den onSoundComplete Handler an, mit diesem und einem erneuten Start Befehl kannst du einen echten Loop erzeugen, nicht nur einen bis 99999 mal.


Grüsse
B
 
Hi,

wenn Du einen Sound mit loadSound() lädst, kann die Aktion start() erst wirksam werden, wenn das onLoad-Ereignis eingetreten ist, d.h. der Sound geladen ist. Mit dem zweiten Parameter bei LoadSound bestimmst Du, ob der Sound gestreamt werden soll. In diesem Fall hat start() (und die Angabe des Wiederholungen) keine Auswirkung, da der Sound automatisch abgespielt wird, sobald genügend Daten vorligen. Also entweder:
PHP:
klaus = new Sound();
klaus.loadSound("02-toilet.mp3", true); // Streaming
klaus.setVolume(10);
var count = 0; // Anzahl Wiederholungen
klaus.onSoundComplete = function() {
    count ++;
    if (count < 100) this.start(); // Wiederholen
}
oder:
PHP:
klaus = new Sound();
klaus.loadSound("02-toilet.mp3", false); // Kein Streaming
klaus.onLoad = function() { // Auf onLoad warten
    this.start(0, 99);
}

Gruß

EDIT: Ahhh.. wieder mal einen Tick zu spät. ;) Übrigens: Soweit ich weiß, entsteht beim Loopen mit onSoundComplete eine kleine Pause, was bei start(offset, loop) nicht der Fall ist - man sollte also schauen, was wichtiger ist: ein "rundes" Looping oder viele Wiederholungen...
.
 
danke danke fuer die schnelle antwort und den auf meine dateien abgestimmten code. es funktioniert Du bist ein Schatz
 
Ich habe nochmal eine Frage dazu.

PHP:
disco = new Sound();
disco.loadSound("discoloop.mp3", false);
var count = 0;
disco.onLoad = function() { 
count ++;
    if (count < 200) this.start(0,99); 
}

Ich habe beide scripte gemischt, habe ich nun einen unendlichen Loop (theoretisch) mit keiner Verzögerung ?
 
Nö, dann hast Du einen Sound, der genau 99 mal abgespielt wird... onLoad wird ja nur beim Laden des Sounds aufgerufen, onSoundComplete jedoch immer, wenn der Sound abgespielt wurde.

Gruß
.
 
SO richtig endlos ohne Unterbrechung geht nicht, folgende Lösung ermöglicht dir aber 9999 Abspielungen ohen Unterbrechung, dann eine klitzekleine Unterbrechung und dann wieder 9999 Loops ohne Unterbrechung, und dann wieder eine klitzlekleine....etc:
PHP:
klaus = new Sound();
klaus.setVolume(10); 
klaus.loadSound("02-toilet.mp3", false); // Kein Streaming 
klaus.onLoad = function() { // Auf onLoad warten 
    this.start(0, 9999); 
}
klaus.onSoundComplete = function() { 
    count ++; 
    if (count >= 9999)
    {
    this.start(0, 9999);
    }  // Wiederholen 
}

Grüsse
B
 
Zurück