実際に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/
|