【新機能】作り忘れたまとめはありませんか?31日前まで期間指定してまとめが作れる高度な検索ができました。有料APIだからツイートの漏れはありません!

AS3のEventメタデータタグは何のためにあるの?

Eventメタデータタグの便利な点についてご教授いただいた過程をまとめました。
4225view 2コメント
14
ログインして広告を非表示にする
にこ らす @Nicol_as 2010-11-16 22:08:16
eventメタデータタグが何のためにあるのか、いまいちわかってない。ので使ったことない…
ザーヒル@Zbrush修行中 @zahir1929 2010-11-16 22:10:19
@Nicol_as addEventListenerの入力補完ようですかね?
ザーヒル@Zbrush修行中 @zahir1929 2010-11-16 22:18:19
@Nicol_as FBしか使ってませんがFDでも行けたはずです。IDEとかその他はわかりません
にこ らす @Nicol_as 2010-11-16 22:24:24
@zahir1929 FDでは(FBでも?)、メタデータタグにしなくても「 addEventListener( 」と打った後には色々なEvent定数が補完候補として出ると思うのですが、それとの違いがよく分からないんです。
@Hiiragi3 2010-11-16 22:25:08
@nicol_as 主にMXMLタグでイベントを扱う時に重要ですねー。あとはFlashDevelopでもEventメタデータタグ書いておくと、そのクラスへのaddEventListenerの時にコードヒントに追加で出てきますよ。
@Hiiragi3 2010-11-16 22:27:09
あとはASDoc吐き出す時に、Eventメタデータタグに反応して対応するイベントが書き出されるから、それでも必要ですね。
ton @ton1517 2010-11-16 22:28:21
@Nicol_as ASDocのためじゃないかな
にこ らす @Nicol_as 2010-11-16 22:34:19
@Hiiragi3 @ton1517 ASDocでも必要になるんですね!ありがとうございます!
にこ らす @Nicol_as 2010-11-16 22:33:15
@Hiiragi3 ありがとうございます。MXMLで必要になるのですね。コードヒントが出るとのことですが、ためしにMinimalCompsのComponentクラス("draw"が定義されている)のインスタンスにaddEventListenerしてみたところ補完は出ませんでした…
ザーヒル@Zbrush修行中 @zahir1929 2010-11-16 22:30:25
@Nicol_as 自分でクラスとかカスタムイベントを作った時にはメタタグつけないと出なくないです?
bkzen @bkzen 2010-11-16 22:35:05
@Nicol_as たぶんそれは Sprite等(EventDispatcherのサブクラス)の場合では? 単純に EventDispatcher を new して addEventListener( をやっても ACTIVATE/DEACTIVATE くらいしか出てこないはず。
にこ らす @Nicol_as 2010-11-16 22:40:07
@Hiiragi3 @zahir1929 @bkzen もしかしたら理解できたかも知れません…。いつもaddEventListenerのあとにカスタムイベント定数を呼び出す際は、自分でカスタムイベントのクラス名を入れていたんですが、それがいらなくなるということですか?
ザーヒル@Zbrush修行中 @zahir1929 2010-11-16 22:41:10
@Nicol_as 少なくとも入力補完の候補リストには表示されます
ザーヒル@Zbrush修行中 @zahir1929 2010-11-16 22:43:37
@Nicol_as 例えば継承なしでIEventDispatcherを実装したクラスを作った場合はイベントタグを付けないと何一つ入力補完候補はでませんが[Event(name="complete", type="flash.events.Event")]とかすると出ます
にこ らす @Nicol_as 2010-11-16 22:51:12
@zahir1929 継承されたイベントだけが補完に出るわけですね!今調べてみたら、SpriteにaddEventListenerしたときに出る補完が、AS3リファレンスのSpriteの「イベント」のリストと同じでした…
@Hiiragi3 2010-11-16 22:51:24
@nicol_as @zahir1929 @bkzen 多分他の方が答えられてると思いますが、そんな感じです。EventDispatcher拡張クラスにEventメタデータタグで、何かしらのイベントを定義しておくと(続く)
@Hiiragi3 2010-11-16 22:52:23
@nicol_as @zahir1929 @bkzen (続き)そのEventDispatcherのインスタンスにaddEventListenerしようとすると、Eventメタデータタグで関連付けたイベントがコードヒントとして出るはずです。
@Hiiragi3 2010-11-16 22:57:58
まぁなんにしても、スーパークラスで定義されているイベント以外のイベントをディスパッチするように作った場合は、Eventメタデータタグを入れておくと、ASDocでも反応するし、コードヒントも出るし、って感じでメリットが多いんで、特に俺俺ライブラリではつけるのをお勧めー。
にこ らす @Nicol_as 2010-11-16 23:07:10
@Hiiragi3 詳しい説明ありがとうございます。だいぶ分かってきました。もう一つお聞きしたいのですが、補完されるためには、eventメタタグのnameの値("resize"など)は、typeの値が示すクラス(Eventなど)に定数として含まれていないといけないですよね?
@Hiiragi3 2010-11-16 23:21:40
@nicol_as コードヒントの場合は、定数として出したいならそういうことになりますけど、入って無くても大丈夫ですよ。ただし、"hoge"みたいな感じで、Stringとして出ますけど。ASDocだと多分エラーが出そうな・・・。ちょっとそこは判らないですねー。
@Hiiragi3 2010-11-16 23:23:50
Stringとして出るっていうのは、addEventListener("hoge", handler);っていうことですね。Event.HOGEみたいな感じでは出ないってことです。
にこ らす @Nicol_as 2010-11-16 23:28:56
@Hiiragi3 コードヒントなら定数でなくても出るんですね。ありがとうございます!
bkzen @bkzen 2010-11-16 23:36:08
Event メタデータタグに限らず、メタデータタグはクラスに対してメタデータを定義する。describeTypeとかやってみるとわかる
にこ らす @Nicol_as 2010-11-17 00:00:00
@bkzen 色々やってみましたがtrace(describeType(new EventDispatcher))とやってみたら理解できました。ここにdeactivateとactivateが定義されているのですね。
残りを読む(4)
あなたのツイートをまとめませんか? ツイートを集めてブログみたいに使おう。

ブックマークしたタグ

あなたの好きなタグをブックマークしておこう!話題のまとめを見逃さなくなります。

コメント

にこ らす @Nicol_as 2010-11-16 23:33:38
nameがイベント定数に含まれない値をもつ場合の補完について追加しました。
にこ らす @Nicol_as 2010-11-17 00:19:03
describeType()に関するやりとりを追加しました。
ログインして広告を非表示にする
ログインして広告を非表示にする