JAVAC.JP
HOSHI TETSUYA 星鉄矢
2005/07/26
hossy@javac.jp
http://www.javac.jp
Google
WWW を検索 WWW.JAVAC.JP を検索

MTASC | ActionScript 2とFlash OOPのすすめ


メニュー

トップへ

インストール マニュアル

Hello Worldとバッチファイル
画像を扱う様々な方法
実際のアプリケーション:時計
実際のアプリケーション:3Dビューア

trace文がない - デバッガの必要性

手軽にMTASC - サーバサイドコンパイラ
trace文がない - デバッガの必要性

実際にMTASCにて開発してみると、デバッガーがないことに不便さを感じます。
Flashにて開発していた際に、パブリッシュプレビューを行い、出力ウィンドウを使っていた人にとってはなおさらのことと思います。
ですので、簡単なデバッガーを掲載します。



JTracer.exe

使い方としては、jp.javac.toolsパッケージJTracerクラスをインポートして使います。
staticメソッドのtraceメソッドにて出力するので、インスタンス化する必要はありません。
以下に、簡単なサンプルソースを掲載します。

TraceTest.as
---
import jp.javac.tools.*;

class TraceTest {
    function TraceTest (path : MovieClip) {
        path.createEmptyMovieClip("seed", 1);
        var ref = this;
        path.seed.onEnterFrame = function () : Void {
            ref.print();
        };
    }

    public function print () :Void {
        var n :Number = Math.random();
        JTracer.trace(n);
    }

    public static function main () :Void {
        var base :TraceTest = new TraceTest(_root);
    }
}

参考ファイルダウンロード
tracetest.zip

JTracer.exeを立ち上げた上で、上記のTraceTest.asをコンパイルしたものを実行すると、JTracerにて、Math.randomメソッドが吐き出した乱数が出力されていることが確認できるかと思います。








jp.javac.tools.JTracerクラス
jtracer.zip

出力を行うJTracerクラスを以下に掲載します。

JTracer.as
---
import jp.javac.tools.jtracerclasses.*;

class jp.javac.tools.JTracer {
    private static var lc :LocalConnectionManager;

    function JTracer () {
    }

    public static function trace (obj) :Void {
        if (lc == undefined) {
            lc = new LocalConnectionManager();
        }
        loopTrace(obj, "");
    }

    private static function loopTrace (obj, str) :Void {
        var type :String = typeof obj;
        if (type == "object") {
            for (var item in obj) {
                loopTrace(obj[item], str + "[" + item + "]");
            }
        } else if (type == "string") {
            lc.sendMessage(str +  obj);
        } else if (type == "number") {
            lc.sendMessage(str +  obj);
        } else {
            lc.sendMessage(str + obj);
        }
    }
}

LocalConnectionManager.as
---
class jp.javac.tools.jtracerclasses.LocalConnectionManager {
    public var lc :LocalConnection;
    private var LC_TRACER :String = "jtrace_lc_tracer";
    private var LC_DEBUGGER :String = "jtrace_lc_debugger";
    private var targetDomain : String = "localhost";

    function LocalConnectionManager () {
        lc = new LocalConnection();
        lc.allowDomain = function () {
            return true;
        };
        lc.connect(LC_DEBUGGER);
    }

    public function sendMessage (str) :Void {
        lc.send(targetDomain + ":" + LC_TRACER, "print", str);
    }
}

パッケージファイルダウンロード
jtracer.zip

LocalConectionを用いたデバッガーはかなり古くからあるものなので、いろいろなものが公開されています。一番自分の使いやすいものを使うのがよいかと思います。
参考
http://acmewebworks.typepad.com/admintool/




All Contents Copyright (C) 2005 HOSHI Tetsuya
Home