久々に。仕事がてんてこまいだったのがようやく落ち着いてきました。
表題の件、ずっとできるはず、と思いながらうまく行かなかったのですが、ある時ふと思い立って調べ直してみたらうまく行ったのでメモ。
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オブジェクトについてもうちょっと調べてみようと思います。