Flex学習記05 - Flexのデバッグ

これまでのエントリ


今回はプログラムのデバッグ、トレースについてです。

デバッグFlash Player を使うと、trace()関数で、ファイルにログを書くことができ、デバッグに便利。

詳しくはヘルプ[ログ機能]の章以降に詳しく掲載されています。
デバッガ版の Flash Player の設定


しかし、デバッグFlash Playerはロードに若干時間がかかるのと、ユーザーはデバッグ版を使っていないことを想定すると、デバッグ版を入れっぱなしというのもどうかと…
また、開発もこなれてくると、あまりIDEのデバッガに頼らなくなるということもありますので、デバッグFlash Playerを使わないシーンでのログも必要になってくると思います。


というわけで、デバッグ版が不要なlog()関数が便利です。
AS3 でどこからでも log()

  • Firebug on Firefoxのコンソールにトレースを出してくれる
  • trace()関数も実行してくれる。

実践

入手したソースコードを、src/log.asとして作成しました。


これを、前回作成した、足し算をServlet経由で行うサンプルで試してみます。

以下の部分がlog()関数の使用例です。

        log("arg1.text = " + arg1.text);
        log("arg2.text = " + arg2.text);

src/main.mxml(ActionScript部分を抜粋)

  <mx:Script>
    <![CDATA[
      import mx.rpc.events.ResultEvent;
      
      private function creationCompleteHandler():void {
      }
      private function send():void {
        var loader:URLLoader = new URLLoader();
        loader.addEventListener(Event.COMPLETE, completeHandler);
        var request:URLRequest = new URLRequest("/sample-server/add");
        request.method = URLRequestMethod.POST;
        var v:URLVariables = new URLVariables();
        log("arg1.text = " + arg1.text);
        log("arg2.text = " + arg2.text);
        v["arg1"] = arg1.text;
        v["arg2"] = arg2.text;
        request.data = v;
        loader.load(request);
      }
      private function completeHandler(event:Event):void {
        //E4X (XML)に展開
        var e:XML = new XML(URLLoader(event.target).data);
        result.text = e.sum;
      }
      
      private function userRequestResultHandler(event:ResultEvent):void {
        //for E4x
        result.text = event.result.sum;
      } 
    ]]>
  </mx:Script>

FirefoxFirebugプラグインを利用することで、実行しているブラウザ上でトレース内容が見られるようになります。