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