Domanda

In Flash action script 3, quando è necessario caricare il testo, si utilizza una classe denominata URLLoader, e quando è necessario caricare un'immagine (o .swf) si utilizza una classe denominata 'Loader.' Per quanto ne so, il caricamento di un .bmp con URLLoader è inutile come il caricamento di un XML in un Loader -. Non calcola

Sto facendo una classe che gestisce una coda di attività sull'estero per essere caricato - ma a parte dividere l'URL di destinazione per verificare l'estensione del file, non riesco a capire un buon modo per capire se ogni URL richiede un URLLoader o un Loader. In ogni caso, è immaginabile che un URL .php potrebbe restituire o di un'immagine o di un documento - quindi non c'è alcun modo di contare sui nomi dei file a dettare il giusto tipo di class loader da utilizzare

.

Tutte le idee su come rilevare in modo affidabile la classe giusta per il lavoro su base URL-by-URL?

È stato utile?

Soluzione

bene, la domanda più difficile, è determinare il tipo di target ...

  1. guardando l'url è abbastanza semplice, ma non può sempre lavorare ... alcune persone servire le immagini phps e così via ...
  2. si potrebbe fare come navigatore ... iniziare a carico, e poi guardare a ciò che è ... ora di nuovo, ci sono molteplici possibilità ...
    1. caricare i dati come dati binari ... una volta fatto, guardare la sequenza di partenza ... è PNG (89 50 4E 47 0D 0A 1A 0A)? GIF (47 49 46 38 39 61)? JPEG (FF E0)? SWF ("FWS" (divertente, non è vero?))? qualsiasi altra cosa dovrebbe essere il testo o il testo base ... nel caso di un'immagine, caricarlo in una Loader con Loader::loadBytes ... stare attenti con SWF però ... si dovrebbe solo graphicals carico fondi sovrani del genere ... in qualsiasi altra caso, convertirlo in una stringa utilizzando la codifica a destra (idealmente dati di testo viene servita in utf8) ... allora forse si può già intuire, se può essere XML, JSON o variabili con codifica URL ... provare parsing (utilizzando le classi XML, com.adobe.serialization.JSON, flash.net.URLVariables) ... se tutto fallisce, probabilmente è solo il testo (si può provare a verificare che superficialmente ... se volete qualche input su questo, mi ha lasciato commenti) ...
    2. fare lo HTTP da soli ... aprire un socket e caricare la fonte ... otterrete tipi MIME in aggiunta ... nulla si può fare affidamento su, ma aiuta ... c'è un implementazione HTTP in AS3 ... una volta che hai i dati
  3. passare il tipo manualmente ... pura e semplice ... e non si basano su nessun altro ...

c'è anche una differenza importante tra Loader e URLLoader ... Loader può caricare domini di dati attraversavano, semplicemente sandboxing suo contenuto così non si può guardare dentro ... URLLoader può solo caricare dal tuo dominio e domini che consentono esplicitamente questo utilizzando i file di criteri interdominio ...

Inoltre, il caricamento di file SWF, che non sono risorse grafiche solo esterni, ma si vuole veramente per interfacciarsi con, non si dovrebbe usare questo, in quanto è necessario il controllo del LoaderContext ecc ...

Quindi, sì ... qualunque modo si sceglie, buona fortuna ...;)

greetz

back2dos

Altri suggerimenti

Bulkloader fa alcune congetture sulla base della url, forse dare uno sguardo in la fonte e vedere come lo fanno?

Personalmente, vorrei specificare esattamente come si desidera caricare obiettate se si tratta di un'immagine o XML. Dal momento che ho scritto un paio di caricatori coda, suggerisco che tu non solo tenere traccia una stringa URL, ma un insieme di oggetti con le cose come, l'URL per caricare, se è stata caricata, la priorità di carico, e tipo. Qui è un certo codice psudo.

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

Ora nel codice quando si vuole aggiungere qualcosa nella vostra coda.

semplicemente

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

// Ora spingere questo nella classe loader impressionante che si è scritto che gestirà la coda. Vorrei inviare l'oggetto da caricare, il riferimento alla corrente portata ad esempio, questo, e il nome della funzione che si desidera chiamare quando questo oggetto è caricato.

MyStaticLodingClass.addQueueObject(loadObject, this, myFunctionThatYouWillCallWhenDone); 

Questa classe di cui sopra dovrebbe ora avere una matrice che è possibile ordinare per priorità per darvi gli elementi da caricare, quali sono i loro tipi sono e il loro URL. In questo modo è possibile

Questo potrebbe aiutare oppure no.

L'altro saggio fare qualcosa per capire che tipo di oggetto che si sta tentando di caricare, ad esempio BMP e utilizzare il caricatore corretto sulla base di una ricerca per questo oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top