Quando si crea un'applicazione Flex con i temi (skin) o personalizzato intercambiabili, uno dei principali problemi che incontriamo è lo stesso precarico. In generale, ci sarebbe da un lato la nostra applicazione swf e dall'altro il css ci sono in carica. Supponendo cargásemos il problema in caso creationComplete con
- "micss.swf" , true ) StyleManager. LoadStyleDeclarations ("micss.swf", true)
avrebbe un problema di sincronizzazione. Gli utenti non avrebbero visto il look & feel della vostra applicazione fino a quando non aveva caricato swf tema frattempo sarebbe il tema di default, offrendo una applicazione abbastanza schifoso.
Per risolvere il problema ci rivolgiamo a precaricare l'applicazione insieme, in modo che quando lanciamo l'evento creationComplete, l'swf è già nella cache del browser e si applica quasi istantaneamente, senza che l'utente percepisca piccolo ritardo.
Per rendere il precarico applicazione personalizzata estendiamo la componente DownloadProgressBar . Oltre il nostro scopo per caricare il css, possiamo anche prendere a tradurre percarga testi, in modo che appaiano in castigliano, un dettaglio per gli utenti.
Lascio il codice di esempio .
Il primo è quello di raccontare l'applicazione per utilizzare il nostro personalizzato preload swf caricare il nostro foglio di stile. Ricordate che quando si esegue l'evento creationComplete, questo swf è già nella cache del browser non viene ricaricata dal server.
- <Mx: Application xmlns: mx = "http://www.adobe.com/2006/mxml"
- layout = "verticale"
- ", true )" creationComplete = "StyleManager.loadStyleDeclarations (". swf micss ", true)"
- preloader = "com.xplota.mainloader.AppProgressBar">
Ora faremo veloce come noi Personalizzare il componente.
- { pacchetto com. xplota. mainloader {
- . * ; importazione. mx preloaders *.;
- . ProgressEvent ; . importare Flash eventi ProgressEvent.;
- . TextFormat ; .. importazione lampo testo TextFormat;
- . Image ; importazione. mx controlli immagine.;
- . Sprite ; .. importare Flash visualizzata Sprite;
- . Event ; . importare Flash eventi sponsor.;
- . FlexEvent ; importazione. mx eventi FlexEvent.;
- . RSLEvent ; importazione. mx eventi RSLEvent.;
- . Loader ; .. importare Flash visualizzata Loader;
- . URLRequest ; .. importare Flash URLRequest netta;
- AppProgressBar extends DownloadProgressBar { public class estende AppProgressBar DownloadProgressBar {
- loader:Loader; private var loader: Loader;
- _preloader:Sprite; privato _preloader var: Sprite;
- AppProgressBar ( ) { AppProgressBar funzione pubblica () {
- ; super ();
- / / Configurare le etichette
- downloadingLabel = "Downloading ..."
- initializingLabel = "Avvio ..."
- / / Imposta il tempo di visualizzazione minimo a 2 secondi
- MINIMUM_DISPLAY_TIME = 2000;
- }
- / / Ignora per restituire true in modo barra di avanzamento viene visualizzato durante l'inizializzazione.
- elapsedTime: int , count: int ) : Boolean { sovrascrivere funzione showDisplayForInit protetta (elapsedTime: int count: int): Boolean {
- ; return true;
- }
- / / Ignora per restituire true in modo barra di avanzamento appare durante il download.
- elapsedTime: int , event:ProgressEvent ) : Boolean { Override funzione protetta showDisplayForDownloading (elapsedTime: int, evento: ProgressEvent): Boolean {
- ; return true;
- }
- / / Cambia il colore del carattere di precarico
- labelFormat ( ) : TextFormat { labelFormat Override protected function get (): TextFormat {
- = new TextFormat ( ) ; var tf: TextFormat = new TextFormat ();
- tf color = 0xFFFFFF.;
- ; . tf font = "Verdana";
- ; . tf size = 10;
- ritorno tf;
- }
- : void { createChildren sovrascrivono funzione protetta (): void {
- ( ) ; . CreateChildren super ();
- }
- / / Una volta che il caricamento dell'applicazione caricare il tema utilizzando lo stesso precarico
- event:Event ) : void { funzione completeHandler Override protected (evento: Event): void {
- = "Cargando tema…" ; . Questa etichetta = "Caricamento tema ...";
- ; loader = new Loader ();
- new URLRequest ( "css/obsidian.swf" ) ) ; . caricatore carico (new URLRequest ("css / obsidian.swf"));
- ( ProgressEvent. PROGRESS , progressHandler ) ; .. loader contentLoaderInfo addEventListener (ProgressEvent. PROGRESS, progressHandler);
- ( Event. COMPLETE , loaderCompleteHandler ) ; .. loader contentLoaderInfo addEventListener (possibilmente COMPLETE, loaderCompleteHandler);
- }
- loaderCompleteHandler ( event:Event ) : void { loaderCompleteHandler private function (event: Event): void {
- FlexEvent. INIT_PROGRESS , initProgressHandler ) ; . _preloader addEventListener (FlexEvent. INIT_PROGRESS, initProgressHandler);
- Event ( Event. COMPLETE ) ) ; dispatchEvent (new Event (possibilmente COMPLETO));
- }
- set preloader ( preloader:Sprite ) : void { ignorare la funzione pubblica insieme preloader (preloader: Sprite): void {
- _preloader = preloader;
- ProgressEvent. PROGRESS , progressHandler ) ; . preloader addEventListener (ProgressEvent. PROGRESS, progressHandler);
- Event. COMPLETE , completeHandler ) ; . preloader addEventListener (possibilmente COMPLETE, completeHandler);
- RSLEvent. RSL_PROGRESS , rslProgressHandler ) ; . preloader addEventListener (RSLEvent. RSL_PROGRESS, rslProgressHandler);
- RSLEvent. RSL_COMPLETE , rslCompleteHandler ) ; . preloader addEventListener (RSLEvent. RSL_COMPLETE, rslCompleteHandler);
- RSLEvent. RSL_ERROR , rslErrorHandler ) ; . preloader addEventListener (RSLEvent. RSL_ERROR, rslErrorHandler);
- }
- }
- }
Nel costruttore delle etichette di classe configurate nella nostra lingua. Prendiamo il metodo labelFormat sobreescirbir modo che possiamo modificare il carattere delle etichette per accogliere il nostro precarico design.
La cosa importante è eseguire l'override del metodo preloader set. La cosa principale è quello di catturare l'evento Event.COMPLETE, che scatterà al termine precarico e prima dell'avvio dell'applicazione. Durante la ripresa di questo evento lancerà il peso del nostro happening CSS allo stesso preloader carico progresso degli stili, per cui gli stessi reaprovechamos precarico. Una volta terminato il caricamento del CSS sarà quando lanciamo manualmente l'evento Event.COMPLETE componente, che avrà inizio prendendo applicazione ed i nostri stili di cache.
Questo metodo non serve solo a caricare gli stili, siamo in grado di precaricare un file che vi serve. Lo abbiamo utilizzato per caricare, così come gli stili, file di configurazione XML. Si può anche andare a cambiare etichetta di carico: la configurazione di carico, carico tema, ecc
Ricordati di giocare per estendere i componenti più semplici è sempre visto come essere costruito l'originale. Usare Ctrl + clic su un tipo di codice si aprirà automaticamente il codice sorgente di esso, essendo in grado di esplorare i metodi che avete a disposizione, è possibile sovrascrivere e pieno funzionamento.










3 utenti hanno commentato "precarico CSS con l'applicazione Flex"
Alimentare I commenti a questo articolo TrackbackBuona notte,
Magnifica spiegazione. Aveva cercato a lungo qualcosa. Sto ridisegnando una domanda di più lingue con le impostazioni memorizzate in XML e avevo bisogno di qualcosa.
Vorrei anche che vi poniate una domanda. Immaginate di precaricare un XML con tutto il contenuto di una lingua, l'XML come posso passarlo al ricorso principale, una volta che ha caricato?
Ciao David,
La parola chiave è "precarico". Il precarico non è carico e sarà quindi già in cache del browser del client.
Nel ricorso principale deve ricaricare, ma il browser non richiedere al server, ma che trarrà direttamente dalla cache.
Tutto quello che dovete fare è caricare poi di nuovo come si fa in precarico.
Grazie Osus,
Cercherò quello che si commenta. Quando si lascia il codice promessa qui nel caso in giro qualcuno manca domani.
Lascia un Commento