レイヤの操作


前回のお話で、とりあえずレイヤがどんなものか分かったと思うんだけど、大丈夫?
たぶん。
じゃあ、前回の最後に出たサンプルのスクリプトから順に説明していくね。
*start
[image storage="shikaku.png" left=100 top=100 layer=0 page=fore visible=true]
[image storage="maru.png" left=400 top=100 layer=1 page=fore visible=true]
最初の *start はラベルと言います。
名札みたいなものね。「この場所は start という名前にします」ってこと。
同じ名前のラベルを作っても大丈夫?
それはダメ。
「startに行くよ〜」って言っても、*start がいくつもあったら、どこに行っていいか、分からないでしょ。
ただ、シナリオファイルが別なら大丈夫。
例えば?
今は first.ks って名前のシナリオファイルに、*start ってラベルを書いてるよね。
別のシナリオファイル、例えば second.ks ってシナリオファイルを作ったら、その中では *start ってラベルが使えるの。
混乱しない?
「first.ks の中の *start」とか「scond.ks の中の *start」って指示すれば、困らないでしょ。
なるほど。郡山市って言っても分からないけど、奈良県の郡山市とか、福島県の郡山市とか言うと分かるもんね。
そういうこと。 で、その次がいよいよ今回の本題なんだけど・・・
[ ] でくくってある。
この [ ] で書いてあるのをタグって言うんだけど、KAGはこのタグを書いて作っていくの。
タグって、HTMLみたいなもの?
うん、そうそう。よく知ってるね。
KAGでは [ ] で囲っていて、かつ中身のタグが間違ってなければ命令を処理するけど、それ以外の場合は通常のメッセージとみなして、画面に表示するの。
わかった!
前のサンプルの「こんにちは。」は、タグじゃなかったから、画面に表示されたんだ。
大正解。
タグは全部覚えないといけないの?
無理に覚える必要はないよ。kag3フォルダの中のkag3docフォルダにすごく丁寧なリファレンスがあって、それを見れば分かるからね。それに、使ってるうちに自然と覚えてしまうから。
たくさんあるんだよね・・・
あるね・・・
でも、よく使うのは限られてると思うし、そんなに難しくないよ。
わかった。 頑張ってみるよ。
うん、その意気。
それで、今回のサンプルのタグは、image タグって言って、レイヤに画像を読み込むための命令なのね。
どんなものでも読み込めるの?
読み込める画像ファイルの形式はJPEG、PNG、BMP、ERI、TLG5、TLG6ね。
それぞれの特徴はリファレンスに書かれているから、状況に応じて使い分けるといいと思うよ。
使い分けって・・・どう使いわけていいか分からないよ。
最初はJPEGかPNGでいいんじゃないかな。
勉強していくうちに、違いも分かるし、使い分けもできるようになるよ。
だといいんだけど・・・
じゃあ、タグの中身を説明するね。
image がタグの名前。これはいいよね。
次の storage とか left とか色々並んでいるのが属性って言って、タグに対する詳細を指定できるの。
属性って、どんなタグでも一緒?
ううん。 同じ属性を使うものもあるし、タグによって別々のものもあるし、色々だよ。
例えば、この最初の storage って言うのは、ファイル名を指定する属性なんだけど、これなら音楽を再生するタグでも同じのが使えそうだよね。でも、例えば文字の色を変えるようなタグだと使えそうにないでしょ。
うん。
つまりそういうこと。
この属性もいっぱいあるけど、使ってるうちに覚えるよ。
ホントかなぁ・・・
不安になってきた・・・・
大丈夫、大丈夫。最初は誰だってそうなんだから。 で、次の left と top は表示する位置ね。 吉里吉里では画面の左上が原点だから、 left=100 top=100 ってことは、左から100ピクセル、上から100ピクセルの位置に shikaku.png を表示することになるの。
四角のどの部分が (100,100) の場所になるの?
画像の一番左上ね。
だから、画像 (100,100) より右下に表示されることになるわけ。
図で書くとこんな感じ。
なるほど・・・
次の layer=0 っていうのが表示するレイヤの番号ね。 標準では前景レイヤが3つに設定されているから、使用できるレイヤは0と1と2だよね。だから、ここでは0を指定してるの。
もし、ここで3とかにするとどうなるの?
エラーが出て動かないよ。
興味があれば試してみるといいよ。
じゃあ、四角と丸を、両方0にしたら?
KAGのタグは書いてある順番に処理していくから、まずレイヤ0に四角を表示して、次に丸を同じレイヤ0に表示するの。
これは一瞬のことだから、丸だけが表示されたように見えるよね。
レイヤ0に四角と丸を両方表示することはできないの?
できるよ。
方法は2つあって、ひとつは四角と丸を両方描いた別の画像を用意すること。
たぶん、これは邪道というか、実際には使えない手ね。
もうひとつは、ちょっと難しいから、また今度ね。
page=fore って言うのは?
レイヤの表ページだって指定してるの。
表ページ?
吉里吉里には、レイヤが表ページと裏ページにあって、表ページが画面に今見えてる面で、裏ページは画面には見えないの。
見えないんだったら、意味ないんじゃない?
また今度説明するけど、トランジションって機能を使うには必要なんだよ。
ふーん・・・よく分からないけど、とにかく必要なんだ。
うん。
それで、今は画面に表示したいわけだから、表ページだって指定してるわけね。
でも、page 属性のデフォルト値は fore だから本当は指定してもしなくても、結果は同じなの。
ただ、スクリプトを見たときに、分かりやすいように書いておいた方がいいかもね。
デフォルト値って?
その属性を指定しなかった時(省略した時)に、自動的に設定される値のことだよ。
属性には省略できるものと、省略できないものがあって、省略できるものの中にはデフォルト値が決まってるものもあるの。
この辺のことは、リファレンスに詳しく書いてあるから、これも使いながら覚えていくしかないね。
んん〜〜、かなり頭がこんがらがってきたよ。
ゆっくり覚えていけばいいよ。
うん・・・・
で、最後の visible は見えるか見えないかを設定する属性ね。 前回言ったように、すべてレイヤ(ベースレイヤは除く)は表示したり隠したりできるの。それは、この visible 属性を設定することで変更できるってわけ。
レイヤの裏ページにするってこと?
ううん。確かに裏ページも見えないんだけど、visible で設定するのは、見えるか見えないか。
表ページだけど、表示はしないってことなんだよ。
だから、裏ページでも visible=true ってすれば、表示されるの。もちろん、裏ページだから表示されても見えないけどね。
んんん・・・
ますますこんがらがってきた・・・
じゃあ、少しサンプルを変更してみようか。
*start
[image storage="shikaku.png" left=100 top=100 layer=0 page=fore visible=true]
[image storage="maru.png" left=400 top=100 layer=1 page=fore visible=true]
クリックしてください。
[p]
[layopt layer=0 page=fore left=300 top=200]
[layopt layer=1 page=fore visible=false]
layoptってタグがあるけど、これはレイヤオプション・・・つまり、レイヤの設定を変更するタグなの。属性の意味はimageタグの説明でしたのと一緒だから分かるよね。
imageタグとほとんど一緒みたいだけど、何が違うの?
imageタグはレイヤに画像を読み込むための命令で、属性で色々指定できるのはおまけみたいな感じかな。
layoptタグはレイヤの設定だけを変更するためのタグだから、画像を読み込むことはできないの。
imageタグは画像を読み込むためのものだから、メッセージレイヤには使えないけど、layoptタグはすべてのレイヤに対して使えるよ。
メッセージレイヤは文字を表示するためのものだから、画像は読み込めないのね・・・
じゃあ、ゲームとかでよくある、メッセージを表示するウィンドウを画像にすることはできないの?
できるけど、それは次回のお楽しみってことで。
よかった、できるんだね。
できないと、味気ないもんねぇ。
あ、ベースレイヤはどうなるの?
一緒だよ。レイヤの名前はbaseに決まってるから、使うならこんな感じかな。
[image storage="base_sample.jpg" layer=base page=fore]
この画像を保存して、動作確認してみて。
visible属性はいらないの?
ベースレイヤは常に表示されてるから必要ないんだよ。
あと、気をつけなければいけないのが画像のサイズね。
今、保存した画像のサイズは640x480だったよ。
うん、それはね、ゲーム画面のサイズが640x480だからなんだよ。
背景だから、ゲーム画面のサイズと一緒じゃないとダメってこと?
そういうこと。
これが違ってるとエラーになるからね。
ちなみに、ゲーム画面のサイズは、設定ファイルの Config.tjs で設定できるようになってるよ。
// ◆ 画面サイズ
// scWidth に画面の幅、scHeight に画面の高さをピクセル単位で指定します。
// 標準的に使われている 640x480 や 800x600 のような画面サイズではないサイズ
// に設定すると、フルスクリーンにできない場合があります。
;scWidth = 640;
;scHeight = 480;
このサイズを変更したら、背景画像のサイズも変更しないといけないんだね。
話がちょっとわき道にそれちゃったけど、さっきの変更したサンプルはどうなると思う?
[p]って何?
あ、説明してなかったね。
KAGのリファレンスによると「改ページクリック待ち」タグね。文字通り、メッセージを表示して改ページするためにクリック待ちするためのタグだよ。
ということは、最初に四角と丸を表示して・・・
「クリックしてください。」ってメッセージを表示して、クリック待ち。
次に、layer0の四角の表示してる場所を移動して、layer1の丸の表示を消す、かな。
はい、よくできました。
じゃあ、実際に動かしてみようか。
おお!
予想通りだ!
ね、思った通りに動いてくれると楽しくなってくるでしょ。
うん。
もうゲーム作れるかも。
それはまだ早いよ・・・


前のページ | MENU | 次のページ



inserted by FC2 system