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

  1. "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.

  1. <Mx: Application xmlns: mx = "http://www.adobe.com/2006/mxml"
  2. layout = "verticale"
  3. ", true )" creationComplete = "StyleManager.loadStyleDeclarations (". swf micss ", true)"
  4. preloader = "com.xplota.mainloader.AppProgressBar">

Ora faremo veloce come noi Personalizzare il componente.

  1. { pacchetto com. xplota. mainloader {
  2. . * ; importazione. mx preloaders *.;
  3. . ProgressEvent ; . importare Flash eventi ProgressEvent.;
  4. . TextFormat ; .. importazione lampo testo TextFormat;
  5. . Image ; importazione. mx controlli immagine.;
  6. . Sprite ; .. importare Flash visualizzata Sprite;
  7. . Event ; . importare Flash eventi sponsor.;
  8. . FlexEvent ; importazione. mx eventi FlexEvent.;
  9. . RSLEvent ; importazione. mx eventi RSLEvent.;
  10. . Loader ; .. importare Flash visualizzata Loader;
  11. . URLRequest ; .. importare Flash URLRequest netta;
  12. AppProgressBar extends DownloadProgressBar { public class estende AppProgressBar DownloadProgressBar {
  13. loader:Loader; private var loader: Loader;
  14. _preloader:Sprite; privato _preloader var: Sprite;
  15. AppProgressBar ( ) { AppProgressBar funzione pubblica () {
  16. ; super ();
  17. / / Configurare le etichette
  18. downloadingLabel = "Downloading ..."
  19. initializingLabel = "Avvio ..."
  20. / / Imposta il tempo di visualizzazione minimo a 2 secondi
  21. MINIMUM_DISPLAY_TIME = 2000;
  22. }
  23. / / Ignora per restituire true in modo barra di avanzamento viene visualizzato durante l'inizializzazione.
  24. elapsedTime: int , count: int ) : Boolean { sovrascrivere funzione showDisplayForInit protetta (elapsedTime: int count: int): Boolean {
  25. ; return true;
  26. }
  27. / / Ignora per restituire true in modo barra di avanzamento appare durante il download.
  28. elapsedTime: int , event:ProgressEvent ) : Boolean { Override funzione protetta showDisplayForDownloading (elapsedTime: int, evento: ProgressEvent): Boolean {
  29. ; return true;
  30. }
  31. / / Cambia il colore del carattere di precarico
  32. labelFormat ( ) : TextFormat { labelFormat Override protected function get (): TextFormat {
  33. = new TextFormat ( ) ; var tf: TextFormat = new TextFormat ();
  34. tf color = 0xFFFFFF.;
  35. ; . tf font = "Verdana";
  36. ; . tf size = 10;
  37. ritorno tf;
  38. }
  39. : void { createChildren sovrascrivono funzione protetta (): void {
  40. ( ) ; . CreateChildren super ();
  41. }
  42. / / Una volta che il caricamento dell'applicazione caricare il tema utilizzando lo stesso precarico
  43. event:Event ) : void { funzione completeHandler Override protected (evento: Event): void {
  44. = "Cargando tema…" ; . Questa etichetta = "Caricamento tema ...";
  45. ; loader = new Loader ();
  46. new URLRequest ( "css/obsidian.swf" ) ) ; . caricatore carico (new URLRequest ("css / obsidian.swf"));
  47. ( ProgressEvent. PROGRESS , progressHandler ) ; .. loader contentLoaderInfo addEventListener (ProgressEvent. PROGRESS, progressHandler);
  48. ( Event. COMPLETE , loaderCompleteHandler ) ; .. loader contentLoaderInfo addEventListener (possibilmente COMPLETE, loaderCompleteHandler);
  49. }
  50. loaderCompleteHandler ( event:Event ) : void { loaderCompleteHandler private function (event: Event): void {
  51. FlexEvent. INIT_PROGRESS , initProgressHandler ) ; . _preloader addEventListener (FlexEvent. INIT_PROGRESS, initProgressHandler);
  52. Event ( Event. COMPLETE ) ) ; dispatchEvent (new Event (possibilmente COMPLETO));
  53. }
  54. set preloader ( preloader:Sprite ) : void { ignorare la funzione pubblica insieme preloader (preloader: Sprite): void {
  55. _preloader = preloader;
  56. ProgressEvent. PROGRESS , progressHandler ) ; . preloader addEventListener (ProgressEvent. PROGRESS, progressHandler);
  57. Event. COMPLETE , completeHandler ) ; . preloader addEventListener (possibilmente COMPLETE, completeHandler);
  58. RSLEvent. RSL_PROGRESS , rslProgressHandler ) ; . preloader addEventListener (RSLEvent. RSL_PROGRESS, rslProgressHandler);
  59. RSLEvent. RSL_COMPLETE , rslCompleteHandler ) ; . preloader addEventListener (RSLEvent. RSL_COMPLETE, rslCompleteHandler);
  60. RSLEvent. RSL_ERROR , rslErrorHandler ) ; . preloader addEventListener (RSLEvent. RSL_ERROR, rslErrorHandler);
  61. }
  62. }
  63. }

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.