親スクリプトって何?(実践編2) |
はい、ステージサイズ400*300、ボールの位置はスタートはステージの上から、下に移動する、全部で10個動かし、スプライト番号は1から10まで……こんなところでどうですか?
ふむふむ、だいぶイメージがわいてきましたよ。
では今までのスクリプトの復習です。
on startMovie次に別のスクリプトを用意してこのように書く
--ここでリスト定義を行っておくと便利
global gKodomoList
set gKodomoList=[]
--パペットの定義もしておこう
repeat with n=1 to 10
puppetSprite n,TRUE
end repeat
end
--プロパティ定義ですね次に別のスクリプトを用意してこのように書く
property myH,myV,mySpNum,myColoron new me,m
set myH=m*30+25
set myV=-10
set mySpNum=m
set mycolor=random(255)-1
return me
end
--親スクリプトを動かす為のハンドラです
on MakeBalls
global gKodomoList
repeat with m=1 to 10
setAt gKodomoList,m,new(script"oya",m)
end repeat
end
ううむ、難しいなぁ……二つ目の親スクリプトで緑色で書いている部分がありますよね。これはどういう意味なんですか?
いずれにせよ画面表示をするためにはスプライト番号を指定して実行しないといけないわけなんですよ。……さっきの話と矛盾するかも知れないけど、最後まで聞いて下さいね。で、「子」にスプライト番号の札を持たせておくんです。その時に10人の「子」を作るわけですから、リピート文を使いますよね。その時ついでに番号も渡してしまえというわけで……。ほら、ハンドラMakeBallsで引数を渡している部分があるでしょ?new(script"oya",m)の部分です!
よ〜くみたらわかりますねぇ……でもこんなの自分で考えつかないでしょ?
いえいえ、これはよくあるパターンで定石と言っても過言ではありませんよ。一度覚えてしまえば、あとは使い回しがききますから。
ま、これで「子」が誕生したわけですよね。で、これを動かすにはどうすればいいのですか?
はい、補助ハンドラを書いてみましょう。このハンドラはボールが下に行くとまた上から降ってくるように設定してあります。親スクリプトの下に続けて書くとわかりやすいですよ。まだキャストの色についての部分は書いていません。今回使用したプロパティはmySpNumとmyVだけです。
set the locV of sprite mySpNum to myV
end
え?これで終わりなんですか?たったこれだけなんですか?
ええ、簡単でしょ。
ま、簡単なのはいいことだわ。で、これを実際のムービーで使おうと思ったら、どこかのフレームスクリプトとかにmove meって書けばいいの?
いいえ、それは大きなミスです。ほら、最初の時に説明したでしょ、「子」のことを「きみ」って呼ぶんでしたよね。だからちゃんと名前を呼んであげなくちゃいけませんね。たとえばフレームスクリプトにこんな風に書いてみたらどうかな?
on exitframe
あ、そうか、ここでさっきのリストを使うんだ。リストの○番目の君はこうしてね、はい、次は○番目のきみはこうしてね……って感じで命令を送るんですね。
そうです!これでひとまずは完成したわけですね。実際にどうなるか見てみましょう!
がんばって下さいね。これでほぼLingoの知識は身についたはずですよ。自信をもって、いろんな作品を作って下さいね!たとえば、今回のテクニックを少し応用すると、「雪のムービー」のようなものが作れるんですよ。
おーし、やってやるぜ!
on move me
put the locV of sprite mySpNum into NowV
if the NowV >=300 then
set myV=-20
else
set myV=NowV+10
end if
global gKodomoList
repeat with m=1 to 10
move getAt(gKodomoList,m)
end repeat
end
一応こんなページでも著作権は佐野彰に存在します
リンクフリーですが、メールでご連絡頂けたら嬉しいです。
ホームに戻る