如何获得加载flash对象的时间?

时间:2012-03-15 08:42:09

标签: actionscript-3 flash flex air flex4.5

  • 如何获取flash对象在浏览器中加载的时间,从创建对象到准备就绪状态?

1 个答案:

答案 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");

同样,这是所有未经测试的代码,但它应该让你开始。