自作クラスをtrace()対応させる方法
自作したクラスをtrace()に渡したときの出力を作るには、と思って調べてみたら、toString()というメソッドを作ればいいことが分かりました。
テストコードを作って試してみました。二つのasソースとTest-config.xmlを準備してください。(デバッグ環境の設定やfdbの使用方法などはこちらのエントリ(4/10のエントリ)を参考にしてください)
/* TestObject.as */ package{ public class TestObject { public function toString():String { return "Testクラスのインスタンスです."; } } }
/* Test.as */ package { import flash.display.Sprite; public class Test extends Sprite { public function Test() { var obj:TestObject = new TestObject(); trace( obj ); } } }
<!-- Test-config.xml --> <flex-config> <!-- 書き出しファイル名 --> <output>Test.swf</output> <!-- コンパイラオプション --> <compiler> <debug>true</debug> </compiler> </flex-config>
fdbで実行すると以下のような出力が行われます。
(fdb) c [trace] Testクラスのインスタンスです.
ちなみに、TestObject.asのtoString()を定義しなかったときには以下のような出力になります。
(fdb) c [trace] [object TestObject]
マトリックスクラスや、複雑なデータ構造のクラスを作ったときには便利ですね。