0

我想跟踪下载和初始化我的 flex 应用程序的客户体验。(a) 有没有办法将数据从预加载器传递到应用程序?我想通过下载所需的时间和初始化所需的时间。(b)Alternatively:在应用层是否有对应preloader事件的事件:1.下载完成2.初始化完成(同Application creationComplete)

4

1 回答 1

1

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.
}
于 2010-01-19T08:29:04.517 回答