0

フレックス アプリのダウンロードと初期化におけるカスタマー エクスペリエンスを追跡したいと考えています。(a) プリローダーからアプリケーションにデータを渡す方法はありますか? ダウンロードにかかる時間と初期化にかかる時間を渡したいと思います。(b) または: プリローダー イベントに対応するアプリケーション レベルのイベントがありますか? 1. ダウンロードの完了 2. 初期化の完了 (アプリケーションの作成完了と同じ)

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 に答える