ActionScript3.0 のお勉強 - addEventListener() - | FLASHプチ講座ブログ

FLASHプチ講座ブログ

FLASHのプチ講座ブログ。ActionScript3.0勉強中。

今回はイベント処理について。


これはアクションスクリプト1.0&2.0からめちゃくちゃ変わってしまって、

おまけにめちゃややこしく感じます!!(私だけ?!)


まず、アクションスクリプトにおける、イベントってなんだっけ?というと、


■マウスの操作
→マウスをクリックしたら...
→マウスをマウスでインスタンスをロールオーバーしたら...
とかいう、マウスの操作に関するイベント。


■キーボードの操作
→ENTERキーが押されたら...
→矢印キー右が押されたら...
という、キーボードに関するイベント。


例として、私のHP、isvalid の、アクションスクリプト入門編、変数01 ページ真ん中あたりにある
「画面をクリックするとひよこが前に(右に)進むアクションをアクションスクリプトを使って作る」という例をみると、
http://isvalid.jp/actionscriptLab/ASlesson/actionscript_variable01.html


アクションスクリプト1.0&2.0では、ムービークリップに直接スクリプトを書けたので、

対象となるムービークリップをクリックして選択(HPの例ではヒヨコ)、

下記コードを「アクションームービークリップ」に書くという方法でした。


onClipEvent(mouseDown) {
step = 45;
_x = _x + step;
}


で、3.0では上記と同じ感じでいくと、
下記スクリプトを、ムービークリップ内のフレームに記述。


stage.addEventListener(MouseEvent.CLICK, stepRight);


function stepRight(event:MouseEvent):void{
var step:int = 45;
x = x + step;
}


まず決定的に違うのは、onClipEvent()というイベントハンドラは使えない!!


微妙に注意が、オブジェクトのx座標(例でいうとヒヨコのx座標)の表し方が、

_x から x に変わってます。


そして、絶対しなくてはいけないのが、イベントリスナーを登録という作業


これがなんだかややこしい感じがするのですが、この作業をタイトルにある、
addEventListener()を使って行います。


addEventListener()には引数が5つあるんですが、絶対必要なのが、一つ目と二つ目。


addEventListener(イベントの型, リスナー関数)


イベントの型というのが、上記スクリプトでいうと、MouseEvent.CLICK の部分。
マウスをクリックしたときに~する、 という部分。


リスナー関数ってのが、stepRight
自分で名前をつけた関数を入れます。今回は右に進むということで、stepRightとしてみました。


つまり、


addEventListener(MouseEvent.CLICK, stepRight);

ということです。


次に、addEventListener()の前についてる stage ですが、
これは、ムービーのステージを指してます。


今の例では、ムービークリップ内のタイムラインに記述してるので、


stage.addEventListener()


とすると、ムービーのどこをクリックしても stepRight が実行。


this.addEventListener() または addEventListener() 


だと、ムービークリップ(例の場合ヒヨコ)をクリックすると stepRight が実行。
(ヒヨコ以外の場所をクリックしても stepRight は実行されません)



ココがわかれば、あとは自分で名前を決めた stepRight という関数を定義してやればよいわけです。


関数がよくわからない人は
ActionScript3.0 のお勉強 - function 関数 - を見てみてください。
http://ameblo.jp/isvalid/entry-10128767366.html


うーん、ややこしい。。。。。汗




ちなみに、コレをメインタイムラインに記述したとすると、ヒヨコのムービークリップをhiyokoとつけたとして、


■ムービーのどこをクリックしてもヒヨコが動くバージョン


this.stage.addEventListener(MouseEvent.CLICK, stepRight);


function stepRight(event:MouseEvent):void{
var step:int = 45;
hiyoko.x = hiyoko.x + step;
}


■ヒヨコををクリックでヒヨコが動くバージョン


hiyoko.addEventListener(MouseEvent.CLICK, stepRight);


function stepRight(event:MouseEvent):void{
var step:int = 45;
hiyoko.x = hiyoko.x + step;
}


と、なります。あぁ疲れた~パンチ!




ActionScript 3.0プログラミング入門 を読みつつ、3.0のお勉強をしていますニコニコ