Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-04-2007, 13:49   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 4
sounds exakt timen

hallo zusammen,

ich würde gerne drei verschiedene (Ereignis-)Sounds hintereinander abspielen lassen. Zwischen dem Abspielen der sounds sollten jeweils genau x milisekunden liegen.

Nachdem ich mit Ansätzen mit setTimeout oder getTimer keinen Erfolg hatte (die Zeitintervalle zwischen den sounds waren total ungenau), habe ich es mal mit gleichmässigem Platzieren der sounds auf der Zeitleiste versucht; auch da hatte ich immer Abweichungen bis 100ms.

Eine fertige Sounddatei kann ich leider nicht schreiben, weil die abzuspielenden Sounds zufallsgeneriert sind. Das generieren der sounds und das erstellen der entsprechenden soundobjekte mache ich schon lange vor dem Abspielbefehl, dies kann also nicht der Grund für die Verzögerungen sein.

grüsse, kaisteier

edit: die drei sounds sollten sich überlappen, der erste also noch weitergehen wenn der zweite startet usw.

Geändert von kaisteier (10-04-2007 um 14:40 Uhr)
kaisteier ist offline   Mit Zitat antworten
Alt 10-04-2007, 14:50   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
edit: die drei sounds sollten sich überlappen, der erste also noch weitergehen wenn der zweite startet usw.
Äh, das widerspricht sich jetzt aber mit dem "Zwischen dem Abspielen der sounds sollten jeweils genau x milisekunden liegen"...

Ich würde über die sound.duration erst einmal herausfiltern, wie lang der aktuelle Song eigentlich ist und dann mit setInterval eine Intervallpause setzen, die (sound.duration - x Sekunden) lang ist und nach Ablauf der Intervallschleife den Folgesong startet.
  Mit Zitat antworten
Alt 11-04-2007, 13:17   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 4
Hi, danke für deine Antwort.

sorry für die unklare Ausdrucksweise. Mit "Abspielen der sounds" meinte ich das Starten der Sounds.

setInterval habe ich auch schon versucht, da gehts nie so genau (möglicherweise ists ja auch falsch programmiert). Weil zwischen dem abspielen der Klänge weniger als eine halbe Sekunde liegt ist die kleine Ungenauigkeit die immer wieder entsteht sehr gravierend.

Hier meine Variante mit SetInterval, könnte ein Fehler zu den schlimmen Verzögerungen führen?
Code:
stop();

/*dies sind namen von bereits definierten soundobjekten*/
sounds = ["s30","s33","s37"]

_global.Ea = 0
function spiels(sounds){
	trace(getTimer());
	_root[sounds[Ea]].start();
	Ea++;
	if(Ea==sounds.length){clearInterval(iv);Ea=0;}
	}
knopf.onRelease = function(){
_global.iv = setInterval(spiels, 200,sounds)
}
/*
wenn ich den zwei mal schnell hintereinander den Befehl zum setInterval gebe, spielt ers beim zweiten mal schon deutlich sauberer ab...

ich verstehe die welt nicht mehr, hat jemand von euch eine Idee was da schief geht?

grüsse, kaisteier
kaisteier ist offline   Mit Zitat antworten
Alt 11-04-2007, 14:12   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ich hab dir doch schon einen Vorschlag gemacht:
PHP-Code:
var counter 0;
meineSounds = new Array("s30.mp3","s33.mp3","s37.mp3");

function 
spiels(){
   
clearInterval(iv);
   
file meineSounds[counter];
   
this["meinSound"+counter] = new Sound();
   
this["meinSound"+counter].loadSound(file,true);
   var 
soundlaenge this["meinSound"+counter].duration/1000;
   
counter ++;
   
iv setInterval(spielssoundlaenge-5);//5 Sekunden vor Ende des Sounds den nächsten laden und abspielen
}
spiels(); 

Geändert von agedoubleju (11-04-2007 um 14:13 Uhr)
  Mit Zitat antworten
Alt 11-04-2007, 18:51   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 4
hallo holger,

danke für den rat und die geduld. deine lösung löst leider mein problem nicht, liegt wie ich glaube allerdings an meiner meiner unpräzisen problemformulierung, sorry!

ich versuchs nochmal...

ich habe drei soundobjekte, die bereits da sind, will die sounds also nicht streamen.

der erste sound sollte gleich nach erreichen des bilds abgespielt werden, der zweite z.b. 0,2 sekunden danach, während der erste weitergeht und der dritte nach 0,4 sekunden starten, während die ersten beiden immer noch weiterlaufen. (ganz unabhängig von deren länge)

mein Problem ist nun aber, dass wenn ich mit setInterval arbeite, die Sache nicht sauber aus meinen boxen kommt. der zweite sound zb nach 190ms und der dritte nach 425ms kommt. mit settTmeout habe ich das selbe problem. Gibt es eine möglichkeit das starten der sounds auf die ms genau zu veranlassen?

grüsse, kaisteier
kaisteier ist offline   Mit Zitat antworten
Alt 11-04-2007, 22:25   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Gibt es eine möglichkeit das starten der sounds auf die ms genau zu veranlassen?
Auf 200 mS genau kannst du vergessen. Dazu sind die Rechner viel zu unterschiedlich schnell mit dem Starten und Abspielen der Sounds.
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele