イナヅマTVログ

EventサブクラスにtoString,cloneを追加しなければいけない?

| 0件のコメント

Essential ActionScript 3.0


Essential ActionScript 3.0を読みなおしていたらEventサブクラスにtoString,cloneを必ず(must)追加しなさい、って書いてあったのに気がついた、あらためてFlash CS3のヘルプをみてみると。

「toString() メソッドのオーバーライドを推奨しますが、必須ではありません。」だとか、LiveDoc

「Event サブクラスを作成する場合は、clone() と toString() メソッドをオーバーライドして、サブクラスに固有の機能を提供する必要があります。」とか書いてある。LiveDoc

あいかわらず分かりにくい説明でイライラさせられる。
toString,cloneを追加しておかないとカスタムEventの情報が正しく取得できなくなるヨなことなのでしょうか。
どっちみち自分で作って自分で使うのだからめんどうだったら作らなくてもいいことにしておいてあげる、なんでしょうネ。

ここはFlashの神Colin Moockさんの言うことを素直に聞いて、ちゃんと作ることにする。

public override function clone():Event {
	return new CustomEvent(type, bubbles, cancelable, [arguments]);
}
public override function toString():String {
	return formatToString("CustomEvent", "type", "bubbles", "cancelable", "eventPhase",[arguments]);
}

ちなみにflash.events.EventDispatcherを継承したorg.goasap.PlayableBaseのtoString関数はこんな感じ。

override public function toString():String {
	var s:String = super.toString();
	var addLast:Boolean = (s.charAt(s.length-1)=="]");
	if (addLast) s = s.slice(0,-1);
	if (playableID is String) s += " playableID:\"" + playableID + "\"";
	else s += " playableID:" + playableID;
	if (addLast) s += "]";
	return s;
}

このイベントでのbubblesは「prototype.js」でも悩んだけど説明を何度読んでも頭に入ってこない。使いどころはどこなんだろう。。

コメントを残す

必須欄は * がついています