Eventメタデータタグを便利に使う


AS3のEventメタデータタグは何のためにあるの?というTogetterを見て、そういえば自分も調べたけど何も書いてなかったなぁと思ったのでメモ。

自分でカスタムイベントを作成すると、addEventListenerしたときのコードヒントにカスタムイベントが出てこなくて面倒だな、と思っていたんですが、Eventメタデータタグを使うと楽ができます。

ActionScriptのメタデータタグについては公式のこちらをどうぞ。

使い方は

[Event(name="eventName", type="package.eventType")]

というような感じで、カスタムイベントクラスの中・・・ではなく、そのイベントをdispatchするクラス(IEventDispacherなクラス)に書く感じになります。

すると、他でそのdispatchするクラスを使ってaddEventListenerしたときにコードヒントがでてくれます。

注意点としては、メタデータタグを書く位置をclassの書いてある位置の上(public class Hoge{}より外側)にすること。メタデータタグ内のプロパティは2重引用符/ダブルクォーテーション(“)で囲うこと

普段文字列はシングルクォーテーション派なので、何をどうやっても動かず、かなり悩まされました。。普通ダブルクォーテーションなんですかね。(FlashBuilderでの場合。FlashDevelop他では動くんでしょうか)

また、Eventのtypeに入れた名前がそのまま定数として大文字+アンダーバーに変換されるので、「hogeFugaXML」みたいなtypeにすると、「HOGE_FUGA_X_M_L」とか残念な変換をされてしまいます。これが実際のEvent側で用意している定数と違う場合、動作しなくなってしまうので注意が必要そうです(この場合はhogeFugaXmlと書けば正常に動作するはず)。

自分で作ったクラスの場合は特に書かなくてもいい場合がほとんどと思いますが、人に渡すものだったりする場合は、書いたほうが親切かなと思うので、有効に使っていきたいです。

参考: