Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-02-2007, 12:56   #1 (permalink)
GrandmasterFlash
 
Benutzerbild von Duckster
 
Registriert seit: Jul 2001
Ort: Freiburg
Beiträge: 251
Sound.onLoad Bug?

Hallo,

lade einen relativ großen (13-15 MB) MP3 Stream in einen embedded player, aber mein onLoad Event wird nicht aufgerufen. Also garnicht, weder true noch false. Weiß jemand Hilfe, warum nicht oder was ich falsch mache?

PHP-Code:
System.security.allowDomain("www.rd-exklusiv.de");
var 
mySound:Sound = new Sound();
var 
pct:Number 1;
var 
my_interval:Number;
var 
whichSound:String "http://www.rd-exklusiv.de/mp3/RDExklusiv_zwischen.mp3";

function 
loadMP3(arg){
    
mySound.loadSound(argtrue);
}

function 
checkProgress(the_sound:Sound):Void {
        
pct Math.round(the_sound.getBytesLoaded()/the_sound.getBytesTotal() *100);
        
loadingBar_mc._width pct 223/100;
        
status_txt.text pct+"% geladen";
}

mySound.onLoad = function(success:Boolean) {
    if (
success) {
        
trace("Sound loaded");
        
status_txt.text "Sound loaded";
        
my_interval setInterval(checkProgress100mySound);        
    } else {
        
status_txt.text "Sound failed";
    }
};

loadMP3(whichSound); 
Der Witz ist ja, dass der Sound abgespielt wird, nur eben das onLoad ruft nicht den Intervall auf, um mir die Loadingbaranzeige zu ermöglichen (und die ist elementar für den dragbaren Bereich des zielsuchscrubbers)

fla anbei.

auch interessant sind die live docs kommentare dazu, aber haben mir nicht wirklich weitergeholfen:

http://livedocs.adobe.com/flash/8/ma...=00002679.html
Angehängte Dateien
Dateityp: zip onLoadBug.zip (4,7 KB, 3x aufgerufen)
__________________
Gruß,
Manuel
Duckster ist offline   Mit Zitat antworten
Alt 23-02-2007, 14:00   #2 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
Also wenn du deinen Sound als Stream einlädst macht es keinen Sinn auf onLoad zu warten. Du musst dein setInterval sofort starten.

Gruss - Skorpion

Geändert von Skorpion (23-02-2007 um 14:01 Uhr)
Skorpion ist offline   Mit Zitat antworten
Alt 23-02-2007, 15:06   #3 (permalink)
GrandmasterFlash
 
Benutzerbild von Duckster
 
Registriert seit: Jul 2001
Ort: Freiburg
Beiträge: 251
wie kommst du denn darauf? für nichtstreaming kann ich ja onLoadComplete verwenden. Außerdem habe ich das natürlich auch probiert, dann hat er aber nicht die totalBytes des MP3's im Header und dann kann er auch die Prozent nicht ausrechnen. Klar muss ich warten, bis das File initialisiert ist. Dafür ist onLoad ja da.
__________________
Gruß,
Manuel
Duckster ist offline   Mit Zitat antworten
Alt 23-02-2007, 15:16   #4 (permalink)
class public{}
 
Benutzerbild von public
 
Registriert seit: Feb 2004
Ort: dessau
Beiträge: 1.406
das onLoad Event wird aufgerufen wenn der sound komplett geladen ist also sind ja demnach schon alle bytes geladen
public ist offline   Mit Zitat antworten
Alt 23-02-2007, 16:22   #5 (permalink)
GrandmasterFlash
 
Benutzerbild von Duckster
 
Registriert seit: Jul 2001
Ort: Freiburg
Beiträge: 251
Zitat:
Zitat von public Beitrag anzeigen
das onLoad Event wird aufgerufen wenn der sound komplett geladen ist also sind ja demnach schon alle bytes geladen
onLoad != onLoadComplete

wozu gibt es denn sonst onLoadComplete?

"Invoked automatically when a sound loads." sagt die Hilfe, also wenn es anfängt zu laden.
__________________
Gruß,
Manuel
Duckster ist offline   Mit Zitat antworten
Alt 23-02-2007, 16:24   #6 (permalink)
class public{}
 
Benutzerbild von public
 
Registriert seit: Feb 2004
Ort: dessau
Beiträge: 1.406
gibt kein onLoadComplete sondern nur ein onSoundComplete <---wenn der sound zu ende gespielt wurde
kannst ja meine Audio klasse nehmen die n paar mehr events unteranderem auch n onProgress
[stuff] - Audio Klasse

Geändert von public (23-02-2007 um 16:27 Uhr)
public ist offline   Mit Zitat antworten
Alt 23-02-2007, 18:24   #7 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
Zitat:
Zitat von Duckster Beitrag anzeigen
wozu gibt es denn sonst onLoadComplete?
Du verwechselst das vermutlich mit dem MovieClipLoader.onLoadComplete.

Zitat:
Zitat von Duckster Beitrag anzeigen
"Invoked automatically when a sound loads." sagt die Hilfe, also wenn es anfängt zu laden.
Das ist eine irreführende Angabe in der Flash-Hilfe. Auch die deutsche Version ist ungenau.
Skorpion ist offline   Mit Zitat antworten
Alt 26-02-2007, 07:07   #8 (permalink)
GrandmasterFlash
 
Benutzerbild von Duckster
 
Registriert seit: Jul 2001
Ort: Freiburg
Beiträge: 251
Zitat:
Zitat von Skorpion Beitrag anzeigen
Du verwechselst das vermutlich mit dem MovieClipLoader.onLoadComplete.



Das ist eine irreführende Angabe in der Flash-Hilfe. Auch die deutsche Version ist ungenau.
hm, ok, was ist dann die Korrekte Beschreibung der zwei Events?
__________________
Gruß,
Manuel
Duckster ist offline   Mit Zitat antworten
Alt 26-02-2007, 08:08   #9 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
Zitat:
Zitat von Duckster Beitrag anzeigen
hm, ok, was ist dann die Korrekte Beschreibung der zwei Events?
MovieClipLoader.onLoadComplete wird aufgerufen wenn ein MovieClip vollständig geladen wurde, aber eben: für Sounds ist das nicht verwendbar. (so nebenbei: ist in der Regel wird eher MovieClipLoader.onLoadInit benutzt).

onLoad gibt es sowohl für Sounds, für loadVars wie auch für MovieClips und wird jeweils aufgerufen wenn das File vollständig geladen wurde.

Gruss - Skorpion
Skorpion ist offline   Mit Zitat antworten
Alt 26-02-2007, 08:14   #10 (permalink)
GrandmasterFlash
 
Benutzerbild von Duckster
 
Registriert seit: Jul 2001
Ort: Freiburg
Beiträge: 251
Aber was nehme ich denn jetzt für meinen Sound? wenn ich das Intervall sofort starte ist BytesTotal immer gleich groß wie BytesLoaded...
__________________
Gruß,
Manuel
Duckster ist offline   Mit Zitat antworten
Alt 26-02-2007, 12:13   #11 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
Zitat:
Zitat von Duckster Beitrag anzeigen
Aber was nehme ich denn jetzt für meinen Sound? wenn ich das Intervall sofort starte ist BytesTotal immer gleich groß wie BytesLoaded...
Hmmm, ja? War mir nicht bewusst. Dann funktioniert anscheinend das Sound.getBytesTotal nicht bei Stream. Du könntest es mit Sound.duration und Sound.position versuchen. Ein Beispiel dazu findest du in der Flash-Hilfe bei Sound.duration.
Skorpion ist offline   Mit Zitat antworten
Alt 26-02-2007, 12:49   #12 (permalink)
GrandmasterFlash
 
Benutzerbild von Duckster
 
Registriert seit: Jul 2001
Ort: Freiburg
Beiträge: 251
Zitat:
Zitat von Skorpion Beitrag anzeigen
Hmmm, ja? War mir nicht bewusst. Dann funktioniert anscheinend das Sound.getBytesTotal nicht bei Stream. Du könntest es mit Sound.duration und Sound.position versuchen. Ein Beispiel dazu findest du in der Flash-Hilfe bei Sound.duration.
"If the isStreaming attribute of the loadSound method is set to true, Sound.duration will only ever return the total number of seconds of the downloaded file so far, not the real total."
__________________
Gruß,
Manuel
Duckster ist offline   Mit Zitat antworten
Alt 26-02-2007, 13:20   #13 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
Ops, in der deutschen Version steht nichts davon.
Dann bleibt dir wohl nichts anderes übrig als die TotalLänge (ob Bytes oder Millisekunden) von Hand einzugeben (oder per PHP die Bytelänge abfragen und an Flash übergeben).

Gruss - Skorpion
Skorpion ist offline   Mit Zitat antworten
Alt 26-02-2007, 13:53   #14 (permalink)
GrandmasterFlash
 
Benutzerbild von Duckster
 
Registriert seit: Jul 2001
Ort: Freiburg
Beiträge: 251
ich versteh das alles nicht, bin ich denn der erste Mensch, der ein mp3 file streamen will und dafür ne Anzeige will? Oder warum finde ich so wenig darüber? Jedes komische Blog hat doch mp3 player integriert, wie haben die das Problem denn gelöst, frag ich mich.
__________________
Gruß,
Manuel
Duckster ist offline   Mit Zitat antworten
Alt 26-02-2007, 14:41   #15 (permalink)
class public{}
 
Benutzerbild von public
 
Registriert seit: Feb 2004
Ort: dessau
Beiträge: 1.406
PHP-Code:
Sound.prototype.getTotalTime = function() {
    var 
time:Number int(this.duration*this.getBytesTotal()/this.getBytesLoaded());
    return 
time;
}; 
getBytesToal() wird auch bei streamsounds richtic ausgegeben das einzigste was da net korekt ausgegebn wird ist die duration

Geändert von public (26-02-2007 um 14:43 Uhr)
public 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:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele