Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-08-2004, 23:13   #1 (permalink)
Neuer User
 
Benutzerbild von Raven_3_
 
Registriert seit: Mar 2004
Beiträge: 118
Question Soundstreaming: Zeitleisten-Regler bei Stop auf 0

Hi,

habe folgendes Problem bei Sound-Streaming:

Code des Zeitleisten-Reglers, der die Position errechnet:
PHP-Code:
function zeitleistenposition() {
    var 
position_num:Number Math.round(stream_sound.position/10);
    
zeitleisten_regler._x = (position_num 0.0997755) + 105;
}
this.onEnterFrame = function () {
    
zeitposition setInterval(zeitleistenposition10);

und würde gerne, wenn die Stop-Taste gedrückt wird, das der Regler
zum Anfang zurück positioniert wird! Was er mit zeitleisten_regler._x = wert
nicht tut, sondern auf der position bleibt, auf der er gestoppt wurde!

mfg
Raven#3
Angehängte Grafiken
Dateityp: jpg problem.jpg (45,5 KB, 9x aufgerufen)
__________________
Wer mit dem Strom schwimmt, wird nie die Quelle finden!
Raven_3_ ist offline   Mit Zitat antworten
Alt 14-08-2004, 23:55   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Also das...
ActionScript:
  1. this.onEnterFrame = function () {
  2.   zeitposition = setInterval(zeitleistenposition, 10);
  3. }
...kann irgendwie nicht gutgehen, oder...?
Bei jedem Frame-Eintritt dasselbe Intervall starten...?

Ansonsten: stimmt denn der x-Wert, der bei deiner kryptischen Berechnung da rauskommt?
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 15-08-2004, 00:00   #3 (permalink)
Neuer User
 
Benutzerbild von Raven_3_
 
Registriert seit: Mar 2004
Beiträge: 118
Arrow

die leiste funktioniert einwandfrei (also der x-wert stimmt)!

das problem ist nur das zurücksetzen des reglers!

onEnterFrame: das movie hat keinen loop, das heißt das
Interval wird so und so nur einmal aufgerufen! Aber was soll
ich denn sonst hinschreiben?

mfg & danke für die hilfe
Raven#3
__________________
Wer mit dem Strom schwimmt, wird nie die Quelle finden!
Raven_3_ ist offline   Mit Zitat antworten
Alt 15-08-2004, 00:15   #4 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Zitat:
Zitat von Raven_3_
onEnterFrame: das movie hat keinen loop, das heißt das
Interval wird so und so nur einmal aufgerufen!
Denkst du... da hast was missverstanden
Bei einer Framerate von 31fps würdest du hiermit 31mal pro Sekunde ein Intervall starten, welches alle 10 ms die Funktion zeitleistenposition aufruft... huiui (abgesehen davon überschreibst du das Intervall ja auch ständig wieder). Vielleicht funktionierts einigermaßen, aber es is völlig übertrieben. Geht doch so auch:
ActionScript:
  1. this.onEnterFrame = zeitleistenposition;
Dann: was macht denn der Stop-Button? Wenn du einen Streaming-Sound stoppst, heißt das nicht, dass seine Property ".position" wieder auf 0 gesetzt wird... und aus der leitest du dir ja irgendwie die x-Position des Sliders ab, oder? Müsstest dann wahrscheinlich manuell zurücksetzen, denk ich mal.
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 15-08-2004, 00:26   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
seltsam, man sieht in letzter Zeit immer öfter so Konstrukte mit onEnterFrame und setInterval...wer hat das nur in die Welt gesetzt??

Wie stoppst du denn deinen Sound?
Wenn du es mit deinSound.stop("idName") machst, dann sollte deinSound.position danach auf null stehen, d.h. wenn du dann nochmal deine zeitleistenposition-Funktion aufrufst, sollte der Regler an der richtigen Stelle stehen. (wenn die 0-Stelle 105 ist...)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 15-08-2004, 00:34   #6 (permalink)
Neuer User
 
Benutzerbild von Raven_3_
 
Registriert seit: Mar 2004
Beiträge: 118
genau das habe ich mir eigentlich auch gedacht, aber genau
das hat mich dann auch zu diesem Forum-Eintrag gebracht!

aber, hab die fla-datei einmal angehängt (MX 2004)
(die MP3-Datei heißt "stream.mp3")

mfg
Raven#3
Angehängte Dateien
Dateityp: zip streaming.zip (23,4 KB, 5x aufgerufen)
__________________
Wer mit dem Strom schwimmt, wird nie die Quelle finden!
Raven_3_ ist offline   Mit Zitat antworten
Alt 15-08-2004, 12:31   #7 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
also ziemlich seltsame Sachen da in deinem Code, z.B. das hier:

ActionScript:
  1. function() {
  2.     setInterval(streamposition, 1);
  3. }

Eine Funktion ohne Namen, die ein Interval erstellt, dieses aber nicht speichert(!) und damit eine Funktion 1000 mal pro Sekunde aufruft...

Hier mal ein neuer, immernoch nicht schöner, aber doch etwas besserer Code für deinen 1. Frame:

ActionScript:
  1. press_status_mc._visible = false;
  2.  
  3. // Sound initialisieren
  4. var stream_sound:Sound = new Sound();
  5. stream_sound.loadSound("stream.mp3", true);
  6. stream_sound.stop();
  7.  
  8. // Aktuelle Zeit-Position
  9. this.streamposition = function() {
  10.     time_sek_str.text = Math.round(stream_sound.position/1000) + "." + (Math.round(stream_sound.position*100)/100)%100;
  11. }
  12.  
  13. // Code für Streaming-Leiste
  14. this.streamingleft = function() {
  15.     var gesamt_num:Number = Math.round(stream_sound.getBytesTotal());
  16.     var geladen_num:Number = Math.round(stream_sound.getBytesLoaded());
  17.     var done_num:Number = Math.round((geladen_num/gesamt_num)*100);
  18.     this.stream_loaded.gotoAndStop(done_num);
  19. }
  20.  
  21. //Code für Zeitleiste und Zeitleisten-Regler
  22. this.zeitleistenposition = function() {
  23.     var position_num:Number = Math.round(stream_sound.position/10);
  24.     zeitleisten_regler._x = (position_num * 0.0997755) + 9;
  25. }
  26.  
  27. this.onEnterFrame = function()
  28. {
  29.     this.zeitleistenposition();
  30.     this.streamingleft();
  31.     this.streamposition();
  32. };

generell müsstest du auch noch den Aufruf der streamingleft-Funktion davon abhängig machen, ob nicht schon der ganze Sound geladen wurde.

onEnterFrame-Funktionen werden JEDEN FRAME, also z.B. 25 mal pro Sekunde aufgerufen. Man sollte damit so sparsam wie möglich umgehen.

onEnterFrame-Funktionen in Kombination mit Intervallen sind Müll, zumindest habe ich noch nie eine Situation gesehen, in der es nötig gewesen wäre.

Generell solltest du ENTWEDER Intervalle, ODER onEnterFrames nehmen.

Man sollte setInterval nie einfach so aufrufen, sondern immmer die Rückgabe der Funktion speichern, also
meinInterval = setInterval(...);
sonst kannst du die Intervalle nie wieder löschen.

*hoffentlich habe ich ihn jetzt nicht vergrault, mit den vielen Lehrmeisterhafen Sprüchen*

zu deinem eigentlichen Problem:
Du kannst den Sound einfach erst an den Anfang setzten, und dann stoppen.

Also auf deinem Button:

ActionScript:
  1. on(release){
  2.     stream_sound.start();
  3.     stream_sound.stop();
  4.    
  5.     zeitleisten_regler._x = 105;
  6.     _global.pause_is = 0;
  7.    
  8.     press_status_mc.gotoAndStop(2);
  9.     press_status_mc._visible = true;
  10. }

Gruß

Janosch
Janoscharlipp ist offline   Mit Zitat antworten
Alt 16-08-2004, 09:46   #8 (permalink)
Neuer User
 
Benutzerbild von Raven_3_
 
Registriert seit: Mar 2004
Beiträge: 118
Arrow

danke für die mühe und hilfe!

werd das in den nächsten tagen, wenn ich zeit habe,
versuchen!

mfg
Raven#3
__________________
Wer mit dem Strom schwimmt, wird nie die Quelle finden!
Raven_3_ ist offline   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:21 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele