- ベストアンサー
AS3 addEventListenerの、(e: )について。
AS3を勉強中の初心者です。本を買い苦戦しながら、何とか読み進めて、おります。詳しい方にお聞きしたいんですが、addEventListenerにでてくる(e: )なんですが、なんと解釈してよいかわかりません。その本にも、説明はなく、調べてもなかなかわかりません。 asをやられてる方には、そんなのも知らないのかとお叱りを受ける事と思いますが、どなたか詳しい方、教えていただけませんか。よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
e: というのは、 mc.addEventListener( MouseEvent.CLICK , function( e:MouseEvent ):void{ trace( e.stageX ) } ); ↑このような形で function に続く ( ) 内に書かれている e: のことでしょうか? ActionScript は”イベント駆動型”という考え方を採用しています。 これは、ムービークリップがクリックされた・マウスが動かされたといった、ムービーの再生中に起こる様々な出来事(イベント)を監視しているプログラムが裏方で動いていて、指定されたイベントが発生した時には予め約束してあった処理が自動的に行われる仕組みのことです。 つまり、「このようなイベントが起きた時にはこの処理をしてほしい」と先に約束しておくという発想が、ActionScript の基本です。 ActionScript 3.0 でのイベント処理は、イベントが起きた時に行う処理を関数として用意し、その関数を addEventListener で登録する決まりになっています。 addEventListener は「このイベントが発生した時にこの関数を呼び出す」と約束するだけで、この時点では関数は実行されません。関数が実行されるのは、指定したイベントが発生した時になります。 イベントを利用する処理ではまず関数を作ることと、この関数はいつかイベントが起きた時に自動的に呼び出されて実行される、という点に注目してください。 ******************************************** addEventListener で登録する関数は、普通の関数と同様に定義します。 関数の構成・役割・書き方についてはお持ちの解説書に詳しい説明があるかと思いますので、そちらをご参考になさってください。 関数は呼び出す際に何かの情報(引数=ひきすうといいます)を渡すことができますが、それにはまず、どんな引数をいくつ受け取る関数なのかを、定義する時に明示しなければなりません。 関数を定義するキーワード・ function に続く ( ) 内にある e: のようなものを、”仮引数”といいます。 仮引数は関数を定義する際にだけ使われる仮の引数です。「この関数はこのような引数を受け取ります」という、引数の見本のようなものだと思ってください。 関数が呼び出されて実行される時には、関数を定義する際に仮引数で書いた部分(先の例では e.stageX の e. の部分)が、実際に渡されてきた情報に置き換えられて処理が行われます。 仮引数はただの見本で名前に特定の意味や決まりはなく、文法の範囲内で自由に名前を決めることができます。 ActionScript 3.0 では、イベントが発生した時に addEventListener で登録した関数が自動的に呼び出されます。 この時、イベントに関する様々な情報を1つにまとめたものが、関数に引数として渡される約束になっています。 この情報を受け取れるようにするために、addEventListener で登録する関数は必ず仮引数を1つ記述し、「この関数は引数を1つ受け取る」という形で定義しなければなりません。 イベントに関する情報をまとめたもののことを”イベントオブジェクト”といいます。 addEventListener で登録する関数を定義する時、イベントオブジェクトを受け取ることが分かりやすいようにとの意味で、仮引数には、eventObj や、短くして e といった名前が使われることがあります。 先述の通り、仮引数は文法に反しない範囲で任意の名前を付けることができます。 a や b でも文法上は問題ありませんが、関数・変数などの名前はスクリプトの分かりやすさも考慮して命名するようにしましょう。 ------------------------------------------------------------- まとめとして、冒頭のスクリプトの動作を詳しく見てみますと。 まず、e という名前の仮引数を使って引数を1つ受け取る名前のない関数を定義し、その関数を addEventListener で登録します。 なお、ここでは名前のない関数を作りましたが、例えば Test という名前の関数を定義して mc.addEventListener( MouseEvent.CLICK , Test ); このように、関数の名前を記述する方法もあります。 むしろ、名前の付いた関数を登録する方が一般的かもしれません。 名前のある関数を定義する場合でも、仮引数の役目は同じです。 インスタンスの mc がクリックされると、登録した関数が呼び出されます。 この関数は引数を1つ受け取ることになっていますから、イベント処理を行うプログラム(ユーザーのスクリプトとは別に稼働しています)は、イベントに関する情報をまとめたものを引数にして関数を呼び出します。 e は仮引数ですので、実際には関数に渡された情報、つまりイベントに関する情報に置き換えられて関数が実行されます。この場合の e とは要するに、関数が受け取ったイベントに関する情報=イベントオブジェクトのことです。 「イベント処理で呼び出される関数にはイベントに関する情報が渡される」と決まっているため、addEventListener で登録する関数は必ず仮引数を1つ使って引数を受け取るように定義しなければなりません。 しかし、渡された情報を使うかどうかはユーザーの自由です。 今回は仮に trace アクションでイベントオブジェクトに含まれる情報を1つだけ表示していますが、不要ならば使わずに無視しても構いません。
お礼
ありがとうございます!こんなに詳しく丁寧に説明くださって、ほんとに感激いたしました!! DPE様は本職の方ですか??とても、尊敬してしまいます。私も、早く自分で、カッコいいflashを作りたいのですが、周りには教えてくれる方もいないため、入門書から始めています。DTP様みたいなとても詳しい方も、始めはこういうもなのでしょうか?一人で悪戦苦闘していると、本当にこれでいいのかなどと、マイナスになるときがあります。 本当に親切な誤解答ありがとうございました!