Frage

In Flash Action Script 3, wenn Sie Text laden müssen, verwenden Sie eine Klasse namens URLLoader, und wenn Sie benötigen, um ein Bild zu laden (oder .swf) verwenden Sie eine Klasse namens ‚Loader‘. Soweit ich weiß, eine .bmp mit URLLoader Laden als nutzlos ist eine .xml in einen Loader als Laden -. Es nicht berechnen

ich eine Klasse mache, die eine Warteschlange von externen Vermögenswerte behandelt geladen werden - aber abgesehen von der Ziel-URL Aufspalten der Dateierweiterung zu überprüfen, kann ich nicht einen guten Weg finden, um zu sagen, ob jede URL ein erfordert URLLoader oder ein Loader. Auf jeden Fall ist es vorstellbar, dass ein .php URL zurückkehren könnte entweder ein Bild oder ein Dokument - so gibt es keine Möglichkeit, auf den Dateinamen zu zählen, die richtige Art der Loader-Klasse zu diktieren verwenden

.

Alle Ideen, wie zuverlässig die richtige Klasse für den Job auf einer URL-by-URL Basis erkennen?

War es hilfreich?

Lösung

gut, die heikele Frage, wird die Art des Ziels zu bestimmen ...

  1. an die URL der Suche ist ziemlich einfach, aber nicht immer funktionieren kann ... einige Leute dienen Bilder von phps und so weiter ...
  2. Sie es wie Browser tun könnten ... Laden starten, und dann schauen, was es ist ... jetzt wieder, gibt es mehrere Möglichkeiten ...
    1. die Daten als binäre Daten laden ... wenn Sie fertig sind, sehen Sie die Startsequenz ... ist es PNG (89 50 4E 47 0D 0A 1A 0A)? GIF (47 49 46 38 39 61)? JPEG (FF E0)? SWF ("FWS" (lustig, ist es nicht?))? etwas anderes sollte Text oder Text basiert ... im Falle eines Bildes, laden sie in eine Loader mit Loader::loadBytes ... seien Sie vorsichtig mit SWF sein, Sie aber ... sollten nur SWFs Last graphicals wie die ... in einem anderen Fall wandelt es in einen String der richtige Codierung (idealerweise Textdaten in UTF-8 serviert) ... dann können Sie vielleicht schon erraten, ob es XML sein kann, JSON oder URL-kodierte Variablen ... versuchen Parsen (Klassen XML, com.adobe.serialization.JSON, flash.net.URLVariables) ... wenn alles fehlschlägt, ist es wahrscheinlich nur Text (Sie können versuchen, dass oberflächlich zu überprüfen ..., wenn Sie eine Eingabe an das wollen, lassen Sie mir einen Kommentar) ...
    2. tun, um die HTTP selbst ... eine Buchse öffnen und die Quelle laden ... Sie werden Mime-Typen zusätzlich zu bekommen ... nichts, was man sich verlassen kann, aber es hilft ... gibt es eine HTTP Implementierung in AS3 ... wenn Sie die Daten
  3. den Typ manuell passieren ... schlicht und einfach ... und Sie verlassen sich nicht auf jemand anderes ...

Es ist auch ein wichtiger Unterschied zwischen Loader und URLLoader ... Loader kann Daten accross Domänen laden, einfach seinen Inhalt einer Sandbox, so dass Sie nicht hineinschauen kann ... URLLoader kann nur Last von Ihrer Domäne und Domänen, die explizit diese ermöglichen Verwendung von Cross-Domain-Richtliniendateien ...

auch, Laden SWFs, die nicht nur externe grafische Elemente sind, aber Sie wollen wirklich mit Schnittstelle, sollten Sie diese nicht verwenden, da Sie die Kontrolle über die Loader usw. müssen ...

so, ja ... wie auch immer Sie sich entscheiden, viel Glück ...;)

greetz

back2dos

Andere Tipps

bulkloader hat einige Vermutungen über die URL basiert, nehmen Sie vielleicht einen Blick in die Quelle und sehen, wie sie es tun?

Persönlich würde ich genau angeben, wie Sie laden möchten, widersprechen, wenn es sich um ein Bild oder XML. Da ich ein paar Warteschlange Lader geschrieben habe, schlage ich vor, dass Sie nur die URL eine URL-Zeichenfolge, sondern eine Reihe von Objekten mit Dingen wie, zu laden verfolgen tun sie nicht, wenn es geladen hat, Last Priorität und Typen. Hier einige psudo Code.

class QueueObject{
  var URLtoLoad:String;
  private var hasLoaded:Boolean = false;
  var isDataObject:Boolean = false;
  var queuePriority:Number = 3; // 
}

Jetzt in Ihrem Code, wenn Sie etwas in der Warteschlange hinzuzufügen.

einfach gehen

var loadObject:QueueObject = new QueueObject();
loadObject.URLtoLoad = "http://theurl.com/somedata.xml";
loadObject. isDataObject= true;

// Schieben Sie nun diese in die ehrfürchtige loader-Klasse, die Sie geschrieben haben, die die Warteschlange verwaltet. Ich würde das Objekt zu laden, den Verweis auf den aktuellen Bereich zum Beispiel diese, und der Name der Funktion, die Sie aufrufen möchten, senden, wenn dieses Objekt geladen wurde.

MyStaticLodingClass.addQueueObject(loadObject, this, myFunctionThatYouWillCallWhenDone); 

Diese Klasse oben sollte nun eine Anordnung, die Sie nach Priorität sortieren können Sie Elemente zu geben, zu laden, was ihre Typen sind und ihre URLs. Auf diese Weise können Sie

Dies könnte helfen oder nicht.

Andere weisen etwas machen, um herauszufinden, welche Art von Objekt, das Sie laden wollen, zB BMP und verwenden Sie die richtigen Lader basierend auf einer Lookup für dieses Objekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top