Keine Delay() / Sleep() funktion in Flash?

FlorianR

Erfahrenes Mitglied
Hallo Zusammen,

ich habe bereits im Forum und in der Flash Hilfe gesucht, bin aber nicht fündig geworden.

Gibt es in Flash die Möglichkeit (davon gehe ich eigentlich aus) eine Verzögerung einzubauen?

Mein Beispiel bezieht sich auf folgendes Problem.
Ich habe ein Sound, dieser Soll sich nach 5 Sekunden wiederholen.

PHP:
sound.start(); 
onSoundComplete() function (){
warten(5Sekunden); <-- ja das suche ich ;-)
sound.start();
}

Danke im Voraus!
Gruß,
Florian
 
Hi,

abgesehen davon, dass dieses:
onSoundComplete() function (){
einen Syntax-Fehler auswerfen dürfte ( ;) ), kann ich Dir die Funktion "setInterval" ans Herz legen (verwende die Forensuche mit dem Begriff oder schau in der Referenz nach).

Gruß
.
 
Ich bin es nochmal - wollte dafür keinen Extra Thread öffnen:

Ich habe es nun hinbekommen mit der setInterval Geschichte.
Allerdings hapert es noch an einem Problem...

Folgendes:
Ich habe einen Sound.
Er wird gespielt und soll nach 5 sekunden nochmal gespielt werden, allerdings 5mal (beispiel) schnell hintereinander.

Mein Code:

PHP:
var schussSound:Sound = new Sound();
var schussVerzoegerung:Number = 3000; // millisekunden
schussSound.attachSound("BTS_0002b.mp3"); // Schussgeräusch
schussSound.setVolume(20);
schussSound.start(); // erstes abspielen
function waitAndPlaySchuss():Void {
	var schuesse:Number = 5;
	var schussAbstand:Number = 1000;
	var schussAnzahl:Number = 0;
	do{
		trace("posi1");
		function schiessen():Void {
			trace("posi3");
			schussSound.start();
			schussAnzahl = schussAnzahl + 1;
		}
		setInterval(this, "schiessen", schussAbstand);
		trace("posi2");
	}while(schussAnzahl == schuesse);
	trace("posi4");
}
setInterval(this, "waitAndPlaySchuss", schussVerzoegerung); // Sound wiederholen

Ich hoffe mir kann jemand helfen!

Gruß,
Florian
 
Hi,

mit setInterval in einer Schleife wirst Du nicht weiterkommen, da a) Du Dir so die Möglichkeite nimmst, Deine Intervalle auch wieder zu löschen und alle Intervalauafrufe gleichzeitig (bzw. mit so geringem zeitlichen Abstand, dass es nicht hörbar sein wird) gestartet werden.

Probiers so:
Code:
var iv = 0;
var anzahl = 5;
var interval = 500;
var c = 0;

var snd = new Sound(this);
snd.attachSound("sound.mp3");
snd.onSoundComplete = function() {
    delete this.onSoundComplete;
    feuer();
}

function feuer() {
    clearInterval(iv);
    c = 0;
    iv = setInterval(this, "doFeuer", interval);
}

function doFeuer() {
    c ++;   
    snd.start();
    if (c >= anzahl) clearInterval(iv);
}

snd.start();

Gruß
.
 
Hi,

sorry, ich war im "Tran" ( ;) ) und habe beide Funktionen (Intervall starten und hochzählen) in einer einzigen verwurschtelt. Den Code in meinem letzten Beitrag habe ich nun korrigiert.

Gruß
.
 

Neue Beiträge

Zurück