久々に。仕事がてんてこまいだったのがようやく落ち着いてきました。
表題の件、ずっとできるはず、と思いながらうまく行かなかったのですが、ある時ふと思い立って調べ直してみたらうまく行ったのでメモ。
SpriteやMovieClipを拡張して作るときは、toString()をoverrideして、戻り値を書き出したい値にすればできる様子。
ただ、Objectを拡張しただけのクラス(何もextendsしてないクラス)だとこれだとできない。
Error: Method marked override must override another method.
みたいに怒られます。
どうしたらいいものかと思ってたんですが、直に
public class Hoge {
public var name:String;
public var text:String;
public function toString():String {
return '['+[name, text]+']';
}
}
と書けばちゃんとtraceした時にtoStringとして動作するようです。いろいろ調べてみたらtoStringはObjectのObject.prototype.toStringとして書かれているというような記述がありました。
参考:Adobe ActionScript 3.0 * 高度なトピック
真似してみたらこれでもできた。
public class Hoge {
public var name:String;
public var text:String;
prototype.toString = function():String {
return '['+[this.name, this.text]+']';
}
}
//----------
var hoge:Hoge = new Hoge();
hoge.name = 'nameTest';
hoge.text = 'textTest';
trace(hoge); //[nameTest,textTest]
prototypeオブジェクトについてもうちょっと調べてみようと思います。