2012-03-15 10 views
2
  • オブジェクトを作成してから準備状態になるまでに、フラッシュオブジェクトがブラウザ内で読み込まれるまでの時間を取得する方法はありますか?

答えて

4

Flashオブジェクトの読み込み時間を測定したいだけなら、FireBugを使用できます。 Flexアプリケーションが完全に使用可能になった時点(つまり、すべてのRSLがロードされ、初期ロードされているすべてのデータ)を知りたい場合は、2つのアプローチがあると思います。アプリケーション内の1つは、カスタムプリローダーを使用してタイミングを開始し、条件が満たされたタイミングを停止します。もう1つはJavaScriptと​​です。そのうちの後者は、プリローダーがロードされる前にすでに遅延が発生している可能性があるため、最も正確な結果が得られます。

JavaScriptとのExternalInterface

私はちょうど私の考えを説明するつもりですので、これをやったことがありません。 Javascriptでは、Flashオブジェクトの読み込みを開始するときに、「日付」オブジェクトを作成します。あなたはおそらくSWFObjectを使ってFlashオブジェクトをページに挿入しているので、おそらくそこにどこかで接続することができます。その後、Flexアプリケーションの内部で、必要な条件が満たされたとき(それらが何であるかを定義するとき)、ExternalInterface.call()を使用して、Flexアプリケーションの準備ができていることをJavaScriptに伝えます。新しい「日付」を作り、最初の「日付」を引くと、あなたの読み込み時間があります。

の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"); 

は再び、これはすべての未テストコードですが、それはあなたが始める必要があります。

+0

externalinterface呼び出しを避けたい場合、SWFObjectのembedSWFメソッドは実際には「属性」の後にもう1つのオプションのプロパティを持ちます。これは、フラッシュが完全にロードされたときに呼び出されるコールバックメソッドです。 swfobject.embedSWF( "MyFlexApp.swf"、 "flashContent"、 "100%"、 "100%"、swfVersionStr、xiSwfUrlStr、flashvars、params、attributes、onFlexAppReady); –

+0

@JamesTomasino Flashアプリケーションがロードされたとき、またはフレームワークRSLを含む完全なFlexアプリケーションがロードされたときに、この関数が呼び出されますか?これは同じことではありません。私は最初のオプションを推測します。この場合、Flexフレームワークが読み込みを開始するときに既に呼び出されます。いずれにしても、最初のデータがロードされるまで待つことは間違いありません。 – RIAstar

+0

ExternalInterfaceコールバックが利用可能になると呼び出されます。それは間違いなく、サポート資産やデータではなくswf自体をロードするのにかかる時間の尺度です。 –