答案 0 :(得分:4)
如果您只想测量Flash对象的加载时间,可以使用FireBug。但是如果你想知道Flex应用程序什么时候完全可以使用(即加载了所有RSL;加载了所有初始数据),我认为有两种方法。应用程序中的一个,使用自定义预加载器来启动计时并在满足条件时停止计时。另一个是通过JavaScript和ExternalInterface。其中我认为后者会给你最准确的结果,因为在加载预加载器之前可能已经有一段延迟了。
JavaScript和ExternalInterface
我从未这样做过,所以我只想解释一下我的想法。在Javascript中,您可以在Flash对象开始加载时创建“日期”对象。你可能正在使用SWFObject将Flash对象注入到页面中,所以你可能会在那里挂钩。然后在Flex应用程序中,当满足必要条件(您定义它们是什么)时,使用ExternalInterface.call()告诉JavaScript Flex应用程序已准备就绪。创建一个新的“日期”并减去第一个“日期”,然后就可以获得加载时间。
有关使用ExternalInterface的更多信息,请参阅文档:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cb2.html
更多细节
创建应用程序就绪时我们将调用的JavaScript函数:
function onFlexAppReady() {
var end = new Date().getTime();
var loadTime = end - start; //in ms.
}
现在,在FlashBuilder生成的代码中,添加swf注入之前的开始时间:
var start = new Date().getTime();
swfobject.embedSWF(
"MyFlexApp.swf", "flashContent",
"100%", "100%",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);
最后,在您的Flex应用中,当满足正确的条件时,请调用JavaScript函数:
ExternalInterface.call("onFlexAppReady");
同样,这是所有未经测试的代码,但它应该让你开始。