Home
News
Weblog
Kompetenzen
Referenzen
Media
Unternehmen
Kontakt

Archive for the ‘Actionscript’ Category

HTTPStatus beim dynamischen Laden eines Images abfragen

without comments

Wenn man in einer Flex-Anwendung ein Image dynamisch nachladen möchte, ist man evtl., je nach Kontext, darauf angewiesen, den Erfolg des Nachladens sicherzustellen. Das kann z.B. dann der Fall sein, wenn das Ausführen von weiteren Programmschritten davon anbhängt. Ein Ansatzpunkt ist das Abfragen des HTTPStatus.

Über einen Listener, der an die entsprechende Image-Komponente attached wird, lässt sich das HTTPStatusEvent überwachen. Über das Property status kann dann der Erfolg des Nachladens überprüft werden.
Einen Haken hat diese Methode allerdings: Der Flash Player erzeugt in den Browsern Netscape, Mozilla, Safari, Opera und IE (Mac) immer den Code 0. Das ist natürlich wenig hilfreich. Mann kann das HTTPStatusEvent jedoch dennoch nutzen, da zu jedem HTTPStatus der Listener anspricht. Fragt man also im Listener noch die bisher geladenen Bytes im Verhältnis zu allen Bytes (Dateigröße des Images) ab, kann man den Erfolg des Nachladens sicherstellen.

Der Actionscript-Code für das Anhängen eines Listener (an einer Image-Komponente):

...
private var loadedImage:Image = new Image();
loadedImage.addEventListener(HTTPStatusEvent.HTTP_STATUS, handleImgLoadedHTTPStatus);
loadedImage.source = "http://dynamicsource.something";
...

Der entsprechende Code für die Handler-Funktion:

private function handleImgLoadedHTTPStatus(evt:HTTPStatusEvent):void {
    switch (evt.status) {
        case 0:
            if(loadedImage != null && loadedImage.bytesLoaded == loadedImage.bytesTotal) {
	            // do something very important here...
            }
            break;
        case 404:
            // if status is send, Code 404 simply means: image has not been found!
            break;
    }
}

Inspiriert durch den Weblog von Peter deHaan.

Written by Carsten Schütz

Oktober 27th, 2008 at 5:24 pm