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