インデックス置き場はこちら
前回はこちら
●こんなところに跡が付いてる!
今までは特に何も考えずに描画のスクリプトを書いていたが、そうするとその線なりなんなりは、そのスクリプトの記述されているスプライトに書き込まれる事になる。_rootに書かれていれば、_rootに描き込まれるわけだ。もちろん、他のスプライトやボタンなどから落書きしてやる事も可能。そのスプライトは何もしてないのに、他のスプライトによって線などが描かれてたり。体にキスマークを残されて浮気がバレたりするパターンに似ている。似てないか。
スプライト単位で管理されるので、clear();で消える物もそのスプライトに描かれた物だけ。
重ね順が上のスプライトに描かれた物は、当然のように下のスプライトなどの上に表示される。ちなみに、最初から画像があるスプライトに書き込みを行うと、書き込まれた物はその元々ある画像の下に表示される。
この新たに描き込まれた線などはそのスプライトの一部になる。そのため、onRollOverなどにも反応する。
元からある画像の上に描き込みたい場合、または描かれた物にマウスが触って感じちゃったりしないようにするには、他のスプライトを作成してそこに描き込む必要がある。
とりあえず、色々ややこしい事になりかねないので、描画メソッドを使う時は、まっさらなスプライトを使うのが無難だと思う。汚れのないモノを汚す方がお前らも楽しいだろ?
●子供が生まれたよ!(ヒルコ編)
まだ新タッチエリア製造のステップには進めないな。
前回書いた通り、描画を行うのはまっさらなスプライトがいい。
そして、今回の場合は触れる場所の数だけスプライトが必要になる。まっさらなスプライトを量産する必要があるわけだ。
もちろん、アイテム追加で何も入っていないスプライトを作成し、それを必要な数だけキャンバスに配置するという方法もある。だが、面倒だし融通利かないし、何よりもスマートじゃないよな。ダサいよ、ダサい!イモだわ!
そこで、よりスマートな方法として、動的にスプライトを生成するメソッドが存在する。createEmptyMovieClip()だ。メソッド名の通り、エンプティなムービークリップ(スプライト)をクリエイトしちゃうメソッドだ。分かり易いな。英語が分かればの話だが。
これの使い方もそんなに難しくない。スプライト(_root含む)で実行すればいい。呼び出すために必要な引数は、生まれてくる子供スプライトの名前と、その表示される深度。深度の値は大きければ大きいほど手前に表示される。
touch[num] = createEmptyMovieClip("tc"+num,1000-num);
こんな感じで使う。名前は面倒なので適当でいい。Flash 5の頃はこの名前を使ってevalなんてメソッドを使いながら手間暇かけてコントロールしていたものだが、今はもうスプライトを作る時にメソッドの戻り値という形で参照を返してくれるので、ありがたく配列にでも収めて管理してやろう。名前?そんな物忘れても上等だ。いやな管理社会だな。
深度に関しては色々注意点もあるので、あとで詳しく述べる。
生まれ出てきた子供は、なんにも入ってない空っぽのスプライトだ。なんに使うんだよと言いたくなるが、結構使い道はあったりする。中身を後から書き込んだり、余所から取り込んだり……。スクリプトだけ実行させるためのスプライトにも使えたり、思いの外用途は広い。バカと鋏は使いよう、好きなように使おう。
サンプルは……。透明な物が生成されたのなんて、見ても分からないからな。今回はパス。

0