前回はこちら
●入れたら出しちゃうよ
ついでのついで。イベントハンドラから関連して関数(メソッド)について話を広げる。普通、関数の使い方を憶えてからイベントハンドラに手を出すもんだと思うが、細かいことはどーでもいいのですよ!そもそも、関数みたいな超重要項目がついで扱いってどうよ。まあ、これもどーでもいいのですよ!
……なんか新作出たらしいな、魔女神判。買う予定はないけどネタバレ怖くてスレが開けん。どーでもいいのですよは魔女神判のルルバージョンです。これもどーでもいいな。ついでにそのどーでもいいのですよのAA作ってスレに投下した犯人は俺だが、それもどうでもいい。最近見かけないし。
本題ね。ハンドラに代入したもの。それはfunctionとか言うなんだかよく分からないモンだった。この訳の分からないものの正体を明らかにしておこう。
functionは、関数あるいはメソッドと呼ばれるものだ。一次関数とか二次関数とか言うのを学校で勉強したはずだが、似たようなものだと考えていい。つまり、データを入れると変化して出てくるものだ。
だが、実際にはどちらかというと『一纏めになった命令文の集合体』という扱われ方をすることの方が多い。
基本的なメソッドの宣言方法は、functionのあとにその関数の名前を書き、続いて引数……関数に渡す変数の一覧を書く。その後、内容を書く。例えば、a+bの計算を行うメソッドならこのように書く。
function plus(a , b){
return a+b;
}
最後のreturnと言うのが、このメソッドが返す値になる。これが実行された時点でメソッドの実行が終わるので、条件文と組み合わせてretuen;とだけ書いて、メソッドの実行を切り上げさせるためにも使われる。このメソッドは極めてシンプルなので、内容も思いっきり薄い。そのため、文が一つしかない。ただ、ifの中身のようにいくつもの文をねじ込むことが当然可能だ。
あと、この宣言は代入文ではないので、最後にセミコロンはいらない。
で、このメソッドを使う時にはこうやって使う。
c = plus(2 , 4);
引数は、宣言文の時と同じようにコンマで区切って渡す。こうすると、cには6が入れられる。
このメソッドの中で、FLASHに影響を与えるような命令、例えばstop();などを実行すると、それがちゃんとFLASHの動作に反映される。ただ、注意点としてはその命令を実行したスプライトなどに影響が及ぶので、スプライトがそのメソッドを実行すると、止まるのはその実行したスプライトだ。_root.stop();にすれば、ちゃんと_rootが止まるけど。この辺はもうちょっと後になってからまた触れることにする。とりあえず、今のうちは全てのfunctionは_root、フレームアクションにおいておけ。
せっかくなので、ついでにちょっと踏み込んだ話もしておく。
例えばfunction plus(a , b , c)というように3つの引数をもつメソッドを作ったとする。で、呼び出す時に d = plus(2 , 4);と呼び出したとする。その時、3番目の引数はどうなってしまうのだろうか。もしかして、パソコンを破壊するような恐ろしい結末を招いてしまうのではあるまいか。
そんなことはないのです。その代わり、まともな結果は返ってこない。さっきの例と同じく、純粋に足し算をするだけの関数だとすると、この場合返ってくるのはNaNだ。
なんでNaNになんのー?と言う心の叫びが聞こえそうなので解説する。この場合、aには2、bには4が入り、関数が呼び出される。その代わり、cにはundefinedが収められてメソッドが実行されてしまう。そのため、2+4+undefinedの答え、足し算しようにもundefinedは数字じゃないよのNaNが返される。
それを逆手にとって、引数の一部を省略可能なメソッドも作れるわけだ。引数がundefinedなら省略された時の処理をすればいいって寸法。
今はややこしいので忘れておいていいと思うが、あとで何かあった時に、思い出してあげてください。今回はサンプル無し。地味だし。
そう言えば、まだforみたいな繰り返し文やってないんだよな。これもやらなきゃ。まあ、そのうち必要性が出てくるだろうから、その時まで保留しておいていいんじゃね。
それと、次回から新しい章に入るからね。50回と言うなんともきりのいいタイミング。ちょうどいいな。やることは今までと大差ない。ただし、エロ成分が多めになるかも。よかったね。でも高校生入門者とかにはオススメできない感じになってしまうが……。気にしたら負けです。ゴウインマイウェイ。

4