MP3 Preloader KEIN Stream

liquidbeats

Erfahrenes Mitglied
Nabend,

Folgenden Code nutze ich um eine Externe MP3 Datei zu Laden

Code:
snd = new Sound(this);
  snd.onLoad = function() {
  	this.soundPlay = true;
  	this.start(0, 99999);
  };
  snd.loadSound("flashoverview/xsound2.mp3", false);
  play();

Funktioniert alles Bestens, keine Frage und stellt auch kein Problem dar.
Das Problem liegt beim Preloader.
So wie ich diesen für Bilder, andere Flash Dateien usw. benutze, möchte er bei dieser MP3 einfach nicht korrekt laufen.
Obwohl Flash die MP3 Datei noch lädt, ist bekommt die variable prozent 100 zugewiesen, sprich getBytesLoaded gibt 100 die summe zurück welche getBytesTotal ebenfalls Liefert, folglich wird der Prozentuale Ladefortschritt nicht korrekt angezeigt und er ist imnu Fertig.
Wenn ich den obigen code etwas verändere, sprich false gegen true ersetze
mp3file.loadSound("flashoverview/xsound2.mp3", false);
fängt er an zu Streamen, was laut der true angabe soweit auch korrekt ist, der Preloader hingegen fängt aufeinmal an den Korrekten Fortschritt anzuzeigen, was ich an sich echt klasse finde, aber für meine zwecke doch recht nutzlos ist, da der Sound zum 1. schon sofort anfängt abzuspielen obwohl der Ladevorgang noch nicht abgeschlossen wurde ( ich weis kann man unterbinden). Und zum 2. er keine Loops abspielt was das eigentliche Problem ist.

Lange Rede kurzer Sinn.
Prealoser soll Funktionieren ohne die MP3 Streamen zu müssen so dass die MP3 im Loop gespielt wird.
Wiealso kann ich die Bytes die geladen wurden korrekt ermitteln?

Wie bekomt man dieses Törtchen gebacken?



Grüße
 
Hi,

Dein Preloader wird nur getBytesLoaded der Hauptzeitleiste abfragen - die mp3 hat damit nicht zu schaffen.

Willst Du nun dass erst die Seite vorgeladen wird und dann die mp3 mit einem eigenen Preloader, oder soll beides zusammen (Hauptfilm und Sound) mit einem gemeinsamen Ladebalken vorgeladen werden (wäre ein wenig komplizierter)?

Gruß
.
 
Hi,

die MP3 Soll seperat geladen werden.
Desweiteren sollen eben die Steuerelemente wie Lautsträrkereglung, Startstopp usw. weiterhin Funktionieren.
Ich könnte die MP3 als Seperaten Movieclip Laden, wüsste dann aber nicht wie ich das bzgl. der Lautstärke Regeln könnte, da ich diese Steuerelemente gerne im Hauptfilm als Movieclip hätte, um nicht all zu viele externe Movieclips reinladen zu müssen.

Im Großen und ganzen sollte es eine SWF Datei sein, wo die mp3 extern Seperat dazugeladen wird.

Gibt es eigentlich die Möglichkeit mit Flash MX 2004 zu Überprüfen ob diese MP3 Existiert ohne ein PHPscript aufrufen zu müssen?

Grüße
 
Hi,

prinzipiell kannst Du eine mp3 wie eine swf- oder Bilddatei vorladen:
Code:
mySound.loadSound("musik.mp3", false); // false für: kein Streaming
this.onEnterFrames = function() {
    var cur = mySound.getBytesLoaded();
    var max = mySound.getBytesTotal();
    if (cur > 0 && max >0) {
        var percent = cur * 100 / max;
        // hier ggf. Ladebalken anzeigen
        if (percent >= 100) {
            // Sound ist komplett geladen!
            delete this.onEnterFrame; 
        }
    }
}

Ohne serverseitiges Script kannst Du bestenfalls versuchen, die Datei zu laden und wenn z.B. nach 5 Sekunden getBytesLoaded() immer noch 0 ist, kannst Du davon ausgehen, dass die Datei entweder nicht existiert, oder keine Verbindung zum Server besteht ...

Gruß
.
 
Guten morgen,

ich hab deinen Code mal eben ausprobiert, und an meine umstände angepasst.
Da tut sich garnichts. ebensowenig wie bei dem Code von mir wo sich jedoch der Sound nach einigen minuten, eben bis er geladen wurde abgespielt wird.


Hier mal der code von Frame 1.
Code:
   snd = new Sound(this);
   snd.onLoad = function() {
   	this.soundPlay = true;
   	this.start(0, 999);
   };
   snd.loadSound("xsound2.mp3", false);
   play();

Hier der Code aus Frame 2.

Code:
   ladebalken._xscale = 0;
   
   onEnterFrame = function(){
   	this.geladen = snd.getBytesLoaded();
   	this.gesamt = snd.getBytesTotal();
   	
   	this.prozent = geladen/gesamt*100;
   	ladebalken._xscale = this.prozent;
   	
   	if(this.prozent >= 100){
   		snd.onLoad = funktion;
   		nextFrame();
   		_root.gotoAndPlay(26);
   		delete(this.onEnterFrame);
   	}
   }
   stop();

Wie gesagt, das Funktioniert vei Externen Bildern, anderen SWF Dateien usw. aber bei der MP3 tritt der mir kräftig in den Po :rolleyes:
Das ganze befindet sich in einem movieclip, welcher auf _root. abgelegt wurde, hat es evtl. was damit zu tun?
Wenn ja dann verstehe ich nicht warum ich zb. so ein Bild vorladne lassen konnte :confused:


Grüße
 
tu ich ja ;) hab beides Probiert, sowohl mit loop als auch deine Methode.

Also wie zu sehen ist habe ich dort auch ein Ladebalken, der den Fortschritt Symbolisieren soll, bzw. zeigen soll wie weit der Lade fortschritt der Datei vorrangeschritten ist. Dieser steht immer auf 100% er Lädt folglich nicht.
Das ist genau das Problem.
Die Datei wird zwar geladen, zu sehen ist aber nichts.
:rolleyes:

da spinnt irgendwie die getLoadedBytes rum.

Grüße
 
Hi,

im Anhang mal ein Gerüst mit einem Ladebalken, der sowohl zum Vorladen des Hauptfilms als auch für den Sound verwendet wird. Nachdem der Sound komplett geladen wurde, wird er als Endlosschleife abgespielt.

Gruß
.
 

Anhänge

  • sndpreload_f7.zip
    11,4 KB · Aufrufe: 102
Guten Morgen,

Vielen Dank ersteinmal für den anhang :)
Ich würde es nicht glauben wenn ich es nicht selbst gesehen hätte :rolleyes:
genau das gleiche Problem.
ich habe dne Pfad zur MP3 geändert, die MP3 dahin kopiert und er lädt trotzdem nicht vor.
Sprich er zeigt weder fortschritt an noch wartet er bis die MP3 Komplett geladen wurde.

Das soll mal jemand verstehen. :confused:


Grüße
 
Hi,

lass Dir mal den Wert von getBytesLoaded des Sounds in einem Textfeld ausgeben. Ich habe den Verdacht, dass der Pfad immer noch falsch ist, da das Beispiel bei mir funktioniert.

Gruß
.
 
Zurück