2010-01-19 3 views
0

Je voudrais suivre l'expérience client en téléchargeant et en initialisant mon application flexible. (a) Existe-t-il un moyen de transmettre des données du preloader à l'application? Je voudrais passer le temps qu'il faut pour télécharger et le temps qu'il faut pour initialiser. (b) Autre possibilité: Y at-il un événement au niveau de l'application qui correspond aux événements préchargement: 1. Télécharger complète 2. complète Initialisation (comme application creationComplete)Flex: Transmettre les données du préchargeur à l'application?

Répondre

1

L'article "Showing the download progress of an application" dans les LiveDocs devrait aider .

Sur la base de cette documentation, je ferais quelque chose comme ceci:

  • créer une sous-classe simple du DownloadProgressBar,
  • override les écouteurs d'événements pour suivre la quantité de temps écoulé pendant le téléchargement/initialisation ,
  • stocke les valeurs de temps en tant que propriétés statiques afin que vous puissiez y accéder à partir de votre application une fois l'initialisation terminée.

Voici un exemple de ce que je pense (je n'ai pas compilé ce code, c'est plutôt pour donner une idée de ce dont je parle).

package 
{ 
public class TimedProgressBar extends mx.preloaders.DownloadProgressBar 
{ 
    public static var startTime:Number = 0; 
    public static var downloadCompleteTime:Number = 0; 
    public static var RSLCompleteTime:Number = 0; 

    public function TimedProgressBar() 
    { 
     super(); 
     startTime = getTimer(); 
    } 

    override protected function completeHandler(event:Event):void 
    { 
     super(); 
     downloadCompleteTime = getTimer(); 
    } 

    override protected function rslCompleteHandler(event:RSLEvent):void 
    { 
     super(); 
     RSLCompleteTime = getTimer(); 
    } 
} 
} 

Set que votre préchargement dans votre Application.mxml et écouter l'événement APPLICATION_COMPLETE:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
    preloader="TimedProgressBar" 
    applicationComplete="applicationCompleteHandler(event)"> 


private function applicationCompleteHandler(event:FlexEvent):void 
{ 
    var completeTime:Number = getTimer(); 

    var downloadTime:Number = TimedProgressBar.downloadCompleteTime - TimedProgressBar.startTime; 
    var rslDownloadTime:Number = TimedProgressBar.RSLCompleteTime - TimedProgressBar.downloadCompleteTime; 
    var totalInitTime:Number = completeTime - TimedProgressBar.startTime; 

    // Do whatever logging you want with this information. 
} 
+0

Ceci est un bon exemple. L'application peut extraire des données du préchargeur, mais vous ne voulez pas aller dans l'autre sens et essayer de pousser les données du préchargeur vers n'importe quelle partie de l'application (ce qui risquerait de charger plus de l'application dans le préchargeur par inadvertance). –

Questions connexes