Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-05-2005, 18:25   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: Zu Hause
Beiträge: 68
Elegante Lösung um Laden einer Musikdatei abzubrechen / anzuhalten

Ich habe einen Script geschrieben, mit dem externe .mp3-Dateien geladen werden können. Es gibt 3 Buttons: btnPlay, btnStop und btnNext. Mit btnNext kann man zwischen 5 Liedern wechseln. Mit Hilfe von btnPlay wird die gewählte .mp3-Datei geladen (mit Fortschrittsanzeige).

Hier ist erst mal der vereinfachte Code des btnStop:

ActionScript:
  1. btnStop.onRelease = function () {
  2.     if (musikLaeuft) {
  3.         spiel.musik.stop();
  4.         musikLaeuft = 0;
  5.     }
  6.     if (musikLadet) { // Ladevorgang abbrechen
  7.         delete spiel.musik; //Soundobjekt löschen, d.h. den Ladevorgang abbrechen
  8.         _root.loader._visible = false; //die Ladeanzeige wieder unsichtbar machen
  9.         musikLadet = 0;
  10.     }
  11. }

musikLaeuft und musikLadet haben jeweils den Wert 1, wenn dieser Zustand gerade zutrifft (die Werte werden in entsprechenden anderen Funktionen gesetzt).
Im obigen Code wird also der Abspielvorgang angehalten, wenn gerade Musik läuft. Dann kann man das Lied ganz normal wieder mit btnPlay starten.
Wenn jedoch gerade ein Lied geladen wird, dann wird der Ladevorgang abgebrochen und man kann mit Hilfe von btnPlay das Lied wieder weiterladen bzw. erneut laden lassen.

Es führt aber zu großen Problemen, dass das Soundobjekt jedes Mal gelöscht wird, wenn der Ladevorgang abgebrochen wird. Beim Erneuten Starten des Abspielvorgangs, d.h. auch des Ladevorgangs, wird die schon geladende Dateigröße nicht mehr richtig erkannt. Dies liegt wahrscheinlich daran, dass ja schon ein Teil der mp3-Datei im Cache des PCs liegt, aber das Soundobjekt gelöscht wurde. Damit wird der ganze Ladevorgang fehlerhaft. Z.B. zeigt die Forschrittsanzeige falsche Werte an. Wenn ich dann auch noch durch mehrere Lieder schalte und starte und den Ladevorgang abbreche, dann häufen sich die Probleme noch mehr an: Dateien werden gar nicht mehr abgespielt, die Ladeanzeige wird extrem langsam, Dateien scheinen im Hintergrund fertiggeladen zu werden etc.
Was genau passiert, kann ich auch nicht erklären, jedenfalls funktioniert der Player nicht mehr so, wie er sollte.


Zusammenfassung meines Posts: Gibt es irgendeine elegante Methode, das Laden einer Musikdatei anzuhalten und später fortsetzen zu können? Einfach das Soundobjekt zu löschen (wie ich es hier in mehreren Threads gelesen habe) und dann einen erneuten normalen Ladevorgang zu starten, führt einfach zu zu großen Problemen.


Cya
__________________
Es gibt 10 Möglichkeiten: Entweder man versteht das Binär-System oder nicht.
Red_Wraith ist offline   Mit Zitat antworten
Alt 11-05-2005, 20:42   #2 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
wie ladest du die lieder?
nur die musik stoppen?
ActionScript:
  1. btnStop.onRelease = function () {
  2.         if (musikLaeuft) {
  3.                 spiel.musik.stop();
  4.                 musikLaeuft = 0;
  5.         }
  6.         if (musikLadet) { // Ladevorgang abbrechen
  7.                 spiel.musik.stop();
  8. //Soundobjekt löschen, d.h. den Ladevorgang abbrechen
  9.                 _root.loader._visible = false; //die Ladeanzeige wieder unsichtbar machen
  10.                 musikLadet = 0;
  11.         }
  12. }
wobei wahrscheinlich das ganze script nötig wäre;
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti ist offline   Mit Zitat antworten
Alt 11-05-2005, 20:48   #3 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
wie wärs, wenn du einfach im onLoad Event etwa sowas reinschreibst:

ActionScript:
  1. meinSound.onLoad = function()
  2. {
  3. if ( ladet != 0 ) // setzt du ja beim stop button
  4. {
  5. meinSound.start();
  6. }
  7. }

so kannst du den sound einfach laden lassen und verhindern, dass er abgespielt wird?!
pokepika ist offline   Mit Zitat antworten
Alt 11-05-2005, 20:59   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: Zu Hause
Beiträge: 68
Zitat:
Zitat von andretti
wobei wahrscheinlich das ganze script nötig wäre;
Das ist mir dann auch gekommen und habe den ganzen Script für den Player aus meinem größeren Flash-Projekt herausgesondert und in eine neue .fla-Datei gepackt. Dabei habe ich gleich den Skript ein bisschen optimiert, sodass es weniger Codezeilen sind.

Mit dieser .fla-Datei werdet ihr dann gleich mein Problem sehen (und hoffentlich dann auch lösen ) können.

Damit sich nich jeder meinen ersten Post durchlesen muss, nochmal eine Zusammenfassung des Problems:

Der Player (siehe Dateianhang) funktioniert einwandfrei, solange man keinen Ladevorgang abbricht (mit btnStop). Wenn gerade keine Datei geladen wird, kann man problemlos alle Buttons einsetzen. Wenn man jedoch einen Ladevorgang abbricht, kommt es zu einer Reihe von Problemen.

Es wäre schön, wenn sich mal jemand die .fla-Datei anschauen könnte.

Cya
Angehängte Dateien
Dateityp: zip nurPlayer.zip (26,0 KB, 10x aufgerufen)
__________________
Es gibt 10 Möglichkeiten: Entweder man versteht das Binär-System oder nicht.
Red_Wraith ist offline   Mit Zitat antworten
Alt 11-05-2005, 21:05   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: Zu Hause
Beiträge: 68
Zitat:
Zitat von pokepika
so kannst du den sound einfach laden lassen und verhindern, dass er abgespielt wird?!
Das Problem ist ja, dass ich erreichen will, dass man jederzeit das Laden abbrechen kann, z.B. wenn man eine langsame Internetverbindung hat und das Laden zu lange dauert, oder einem während eines Ladevorgangs einfällt, dass man doch lieber ein anderes Lied hören möchte.

pokepika und andretti, seht auch einfach mal die .fla-Datei an.


Cya

PS: Damit die Sounddateien auch wirklich neu geladen werden, muss man sie aus den Temporary Internet Files jedes Mal rauslöschen. Ansonsten werden sie ja in einem Bruchteil einer Sekunde geladen.
__________________
Es gibt 10 Möglichkeiten: Entweder man versteht das Binär-System oder nicht.

Geändert von Red_Wraith (11-05-2005 um 21:32 Uhr)
Red_Wraith ist offline   Mit Zitat antworten
Alt 12-05-2005, 22:01   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: Zu Hause
Beiträge: 68
Hat keiner eine Idee?
__________________
Es gibt 10 Möglichkeiten: Entweder man versteht das Binär-System oder nicht.
Red_Wraith ist offline   Mit Zitat antworten
Alt 16-05-2005, 17:51   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: Zu Hause
Beiträge: 68
Zitat:
Zitat von Red_Wraith
Hat keiner eine Idee?
Wie es aussieht, wohl nicht. :/


Cya
__________________
Es gibt 10 Möglichkeiten: Entweder man versteht das Binär-System oder nicht.
Red_Wraith ist offline   Mit Zitat antworten
Alt 16-05-2005, 20:27   #8 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
ne, hab leider keine idee, um ein laden anzuhalten, also zu pausieren..
pokepika ist offline   Mit Zitat antworten
Alt 17-05-2005, 10:39   #9 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: Zu Hause
Beiträge: 68
Zitat:
Zitat von pokepika
ne, hab leider keine idee, um ein laden anzuhalten, also zu pausieren..
Oder vielleicht, dass man das Laden abbricht, die aktuelle Position beim Laden gespeichert wird, und dann an dieser Position weitergeladen wird.
Oder vielleicht muss man mit mehreren MC arbeiten, die dann kopiert, gelöscht etc. werden.

Ich habe aber leider keine Ahnung, ob und wie man diese Ideenansätze umsetzen kann.
__________________
Es gibt 10 Möglichkeiten: Entweder man versteht das Binär-System oder nicht.
Red_Wraith ist offline   Mit Zitat antworten
Alt 18-05-2005, 01:01   #10 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: Zu Hause
Beiträge: 68
Mir ist aufgefallen, dass in der .fla-Datei die ich gepostet habe, nicht nur der Player drinn war. Die Datei die an DIESEM Post hängt, enthält nun wirklich nur den Player, ist also die richtige Datei.

Ich bitte einen Moderator, den alten Link zu löschen, da es so aussieht, dass ich meine aäteren Posts nicht editieren kann.

Also bitte den neuen Link verwenden!
Angehängte Dateien
Dateityp: zip nurPlayer.zip (8,5 KB, 11x aufgerufen)
__________________
Es gibt 10 Möglichkeiten: Entweder man versteht das Binär-System oder nicht.

Geändert von Red_Wraith (18-05-2005 um 01:03 Uhr)
Red_Wraith ist offline   Mit Zitat antworten
Alt 18-05-2005, 01:26   #11 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Wenn Du in Flash irgendwas lädst "Swf" oder "Mp3", wenn des Ding mal lädt dann lädts
Es gibt die Theorie (ich habs noch nicht wirklich getestet) das wenn Du eine Null-Datei (Dummy) ins selbe SoundObjekt lädst, das dann der ladevorgang des vorhergegangenen unterbrochen wird
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 18-05-2005, 10:22   #12 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: Zu Hause
Beiträge: 68
Zitat:
Zitat von RustyCake
Wenn Du in Flash irgendwas lädst "Swf" oder "Mp3", wenn des Ding mal lädt dann lädts
Es gibt die Theorie (ich habs noch nicht wirklich getestet) das wenn Du eine Null-Datei (Dummy) ins selbe SoundObjekt lädst, das dann der ladevorgang des vorhergegangenen unterbrochen wird
Die Idee habe ich auch schon gehabt (leer.mp3). Nur funktioniert das nicht richtig, weil es auch nicht funktioniert, wenn ich so einstell, dass man während dem Ladevorgang einfach zum Nächsten Lied weiterschalten kann (ohne dass das Soundobjekt gelöscht wird!): dann wird das alte Lied seltsamerweise weitergeladen, plötzlich wird nichts mehr abgespielt etc., d.h. die ganze Palette an Problemen ist wieder da.

Cya


PS: Könnte bitte ein Moderator den früheren Dateianhang nurPlayer.zip löschen? Oder einfach den Link abändern, damit dort auch auf die richtige (neuere) Datei verlinkt wird.
__________________
Es gibt 10 Möglichkeiten: Entweder man versteht das Binär-System oder nicht.

Geändert von Red_Wraith (18-05-2005 um 10:27 Uhr)
Red_Wraith ist offline   Mit Zitat antworten
Alt 19-05-2005, 01:07   #13 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Zitat:
Zitat von Red_Wraith
Nur funktioniert das nicht richtig, weil es auch nicht funktioniert, wenn ich so einstell, dass man während dem Ladevorgang einfach zum Nächsten Lied weiterschalten kann (ohne dass das Soundobjekt gelöscht wird!):
Hast Du schon mal probiert für jedes SoundObject einen eigenen MovieClip zu verwenden? dann dürfte dieses problem (weiterschalten) gelöst sein.
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 19-05-2005, 13:27   #14 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: Zu Hause
Beiträge: 68
Zitat:
Zitat von RustyCake
Hast Du schon mal probiert für jedes SoundObject einen eigenen MovieClip zu verwenden? dann dürfte dieses problem (weiterschalten) gelöst sein.
Danke für den Tip. Jetzt funktioniert wenigstens die Prozentanzeige (Ladestatus) ein wenig besser. Lieder werden aber immer noch im Hintergrund weitergeladen, sodass wenn ich weiterschalte, neue Lieder immer langsamer geladen werden.

Könntest du dir vielleicht mal den aktuelle Code ansehen? Irgendwo muss da ein Wurm drinnstecken.


Cya
Angehängte Dateien
Dateityp: zip nurPlayertest2.zip (6,4 KB, 9x aufgerufen)
__________________
Es gibt 10 Möglichkeiten: Entweder man versteht das Binär-System oder nicht.
Red_Wraith 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 10:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele