2010-01-19 84 views
0

我想跟踪下载和初始化我的Flex应用程序的客户体验。 (a)是否有将数据从预加载器传递到应用程序的方法?我想通过下载所需的时间和初始化所需的时间。 (B)另外: 有没有在对应于预加载事件的应用程序级别的事件: 1.下载完整 2.初始化完成(同应用creationComplete)Flex:将数据从preloader传递到应用程序?

回答

1

"Showing the download progress of an application"文章中的LiveDocs中应该帮助。

基于文档的,我会做这样的事情:

  • 创建DownloadProgressBar的一个简单的子类,
  • 覆盖的事件监听器来跟踪下载/初始化时已经逝去的时间量,
  • 将时间值存储为静态属性,以便您可以在完成初始化后从应用程序访问它们。

这是我在想什么的例子(我没有编译这段代码,更多的是给出我在说什么的概念)。

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(); 
    } 
} 
} 

集,作为您的Application.mxml您的预加载,并听取了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

这是一个很好的例子。应用程序可以从预加载器中获取数据,但不希望以其他方式进行,并尝试将数据从预加载器推送到应用程序的任何部分(这可能会无意中在预加载器中加载更多应用程序)。 – 2010-01-22 03:15:26

相关问题