Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-04-2009, 10:49   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Ort: Dresden
Beiträge: 105
Loader Manager Theorie

Ich suche nach einer (fertigen) Lösung für einen Loader Manager.

Anwendung:

Code:
Eine Beispielanwendung wäre eine gewöhnliche Bildergalerie. Alle Bilder sind
in Kategorien organisiert. Es gibt eine Datenressource, welche die vorhandenen
Kategorien beschreibt (Name, Reihenfolge, Anzahl Bilder, Thumbnail der Kate-
gorie) und jeweils pro Kategorie eine Ressource, welche die enthaltenen Bilder
beschreibt (Name, Reihenfolge, URL, URL des Thumbnails).
Die Anwendung lädt die Hauptressource und zeigt die Vorschaubilder der Kategorien
an. Bei Klick auf eine Kategorie werden die Kategoriedaten geladen und anschließend
die Thumbnails.

Wird während des Ladens der Thumbnails in eine andere Kategorie gewechselt,
soll das Laden der aktuellen Kategorie unterbrochen und erst wieder aufgenommen
werden, wenn in diese Kategorie irgendwann zurückgewechselt wird.

Wenn ein Thumbnail geklickt wird, soll das betreffende Bild vor den übrigen Thumb-
nails geladen werden.

Trotz wilden Herumklickens soll die jeweils aktuell gewählte Kategorie sofort
laden und nicht auf Vorgängerkategorien warten.
Ich bin jetzt dabei, mir die genauen Anforderungen an einen solchen Loader Manager
zu extrahieren, und vielleicht gibts ja den einen oder anderen Hinweis dazu.

Anforderungen:
  1. Der Loader Manager ist eine Warteschlange, die alles lädt, was in ihr enthalten ist, bis sie wieder leer ist.
  2. Man kann den Loader jederzeit stoppen und wieder aufnehmen, um z.B. auf anderem Weg Ressourcen zu laden.
  3. Der Loader nimmt einzelne Ressourcen an oder aber Listen von Ressourcen. Loader.add(resource), Loader.add([resource1, resource2]).
  4. Listen kann man individuell stoppen und wieder aufnehmen. Bei einzelnen Ressourcen ist das nicht nötig.
  5. Listen oder Einzelressourcen kann man jederzeit wieder entfernen. Sie werden automatisch entfernt, wenn sie fertig geladen wurden.
  6. Man kann die Reihenfolge bestimmen, in welcher die Objekte geladen werden sollen. Ein Bild etwa würde dann vor den Thumbnails seiner Kategorie eingefügt werden.
  7. Man kann vom Loader den Ladestatus einer Sequenz, einer Einzelressource oder den Overall-Status erfragen. 12 out of 24 loaded (52.71%)
  8. Ein Client kann sich als Listener bei beliebigen Einzelressourcen oder Listen registrieren, um progress/complete/failure/stop-Ereignisse zu verarbeiten.

Irgendwas vergessen?

Was es schon gibt:

Ich konnte folgende 3 Loader Manager im Web finden. Vielleicht gibts ja noch einen mehr. Hier mal eine unsortierte Augenblicksbeschreibung.

Masapi http://code.google.com/p/masapi/
  • Aus der Schweiz
  • Umfangreicher Softwareklotz mit einem Haufen vordefinierter Ressourcetypen (png, swf, txt, css, Sound, Stream).
  • Priorisierung von Ressourcen möglich (nutzt einen Array-Heap).
  • Externe XML-Konfiguration für die zu ladenden Objekte möglich.
  • Overall-Fortschritt und Item-Fortschritt feingranular verfolgbar (elapsedTime, remainingTime, currentSpeed, ...).
  • Automatische Wiederholung fehlgeschlagener Downloads spezifizierbar.

QueueLoader http://code.google.com/p/queueloader-as3/
  • USA
  • Ein schlanker Loader mit einer noch schlankeren Light-Variante.
  • Viele vordefinierte Ressource-Typen.
  • Nicht immer optimale Implementierung. Wenig Kapselung.
  • Externe XML-Konfiguration für die zu ladenden Objekte möglich.
  • Fokus auf "dispose"-Funktionalität, leert alle Referenzen. Aus meiner Sicht eigentlich unnötig.
  • Priorisierung möglich, wenn man die aktuelle Reihenfolge kennt (per addItemAt gelöst)
  • Overall-Fortschritt und Item-Fortschritt feingranular verfolgbar (bytesLoaded, bandwidth, percentage, queuepercentage, ...).

BulkLoader http://code.google.com/p/bulk-loader/
  • Aus Brasilien
  • Auch hier der Schwerpunkt, eine einheitliche Schnittstelle zu den verschiedenen konkreten Loadern herzustellen, dementsprechend viele Ressourcetypen.
  • Mehr oder weniger eine 1-File-Implementierung :-)
  • Bietet Lazy-Loading Funktion, bei der weitere Objekte abhängig von einem Datenfile geladen werden.
  • Keine Priorisierung möglich
  • Einfacher Overall-Fortschritt und Item-Fortschritt verfolgbar.
  • Gewichtung von Items möglich für eine genauere Fortschrittsberechnung.
  • Automatische Wiederholung fehlgeschlagener Downloads spezifizierbar.
kakenbok ist offline   Mit Zitat antworten
Alt 29-04-2009, 20:00   #2 (permalink)
thinkin aBout tha lib.
 
Benutzerbild von kaneda
 
Registriert seit: Nov 2001
Ort: Kölle
Beiträge: 1.379
Super auflistung

Ich find die Auflistung super, kenne leider keine weiteren ausser den kleinen hier:

http://code.google.com/p/addicted2fl...sh/data/loader

Vielleicht beschäftige ich mich mal weiter damit. Btw.: Ein guter designer sagte mal: "Wenn du deine Arbeit richtig machst dann braucht der Benutzer nicht warten."
__________________
Back to community with http://leichtgewicht.at
kaneda ist offline   Mit Zitat antworten
Alt 08-05-2009, 13:15   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 17
Zum BulkLoader, den ich sehr gern und oft nutze:
  • Keine Priorisierung möglich

Das stimmt nicht...

BulkLoader.changeItemPriority(key, newPriority) does the trick
danielh ist offline   Mit Zitat antworten
Alt 08-05-2009, 21:05   #4 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Ort: Dresden
Beiträge: 105
Das kann ich bestätigen.
kakenbok 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 12:56 Uhr.

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


Copyright ©1999 – 2014 Marc Thiele