今さら文字の表示? 今までも文字は表示してたじゃない。 |
|
それはそうなんだけど、 もう少し色々やってみようかな、って。 まず、前回のおさらい。 [p]は何のタグだった? |
|
それくらい覚えてるよ。 改ページクリック待ちでしょ。 |
|
うん。 今回はそれに関連するタグからはじめよっか。 |
|
関連するタグ? | |
まず、[cm][ct][er]から。 これらは、一言で言うとメッセージレイヤのクリアなの。 |
|
3つとも一緒? | |
厳密には違うんだけど、あまり使い分けしてる人はいないんじゃないかなぁ。 どれかお気に入りのひとつをメインに使ってると思うよ。細かい違いについてはリファレンスを読んでね。 |
|
え〜、読むのめんどくさいよ〜。 | |
これくらいでめんどくさがってちゃ、ゲームなんて作れないよ。 しっかり読んでおくこと! |
|
・・・今日のクリスは厳しいね・・・ | |
今回は[er]を使うことにするね。 メッセージレイヤに表示されてる文字を消してメッセージレイヤをリセットするぬんだけど、このとき、フォントの大きさとか、文字の装飾とか、すべてデフォルトの状態に戻っちゃうの。 | |
デフォルト・・・? どこかで聞いたような・・・・ あ!前の設定ファイルの話だ。 |
|
うん、そう。 そのデフォルトの状態に戻るのね。 |
|
なるほどね〜 | |
ついでに、あと2つ。 [r]が改行で、[l]が改行クリック待ちのタグね。 |
|
[p]と[l]って、何か違うの? | |
クリック待ちのカーソルが、改行用と改ページ用で違うの。 他にも細々とした違いがあるけど、それは例によってリファレンスを見てね。 |
|
はいはい・・・ | |
じゃあ、次のサンプルを動かしてみよ〜 | |
*start 改行します[l][r] 改ページします[p][er] 改ページしたよ |
|
動かす前に、どうなるか予想してみてね。 | |
[l]で改行のクリック待ちをして、[r]で改行・・・ 次に[p]で改ページのクリック待ちで、[er]でクリア。 |
|
実際に動かしてみようか。 | |
あ、なるほど〜。 実際に動かすと、よく分かるね。 |
|
でしょ? [l]を消したり、[r]を消したり、色々変更して、動作の違いを見てみるともっとよく分かるよ。 |
|
ほんとだ〜! | |
じゃあ、どんどん行くよ〜。 | |
*start [layopt layer=message0 page=fore visible=true] [layopt layer=message1 page=fore visible=true] [position layer=message0 page=fore left=10 top=10 width=620 height=200 color=0xff0000 opacity=128] [position layer=message1 page=fore left=10 top=250 width=620 height=200 color=0x0000ff opacity=128] [current layer=message0 page=fore] メッセージレイヤ0です[p] [current layer=message1 page=fore] メッセージレイヤ1です[p][er] er は カレントレイヤだけクリアするけど、[r] cm は 全レイヤをクリアします[p][cm] |
|
少し長いから、コピペした方がいいかもね。 ちなみに、layer=message0 っていうのが、メッセージレイヤの0ってことね。 初期状態ではメッセージレイヤの数は2個に設定されているから、message0 と message1 が使えるってわけ。 |
|
知らないタグが出てきてるよ。 | |
そだね。 position はメッセージレイヤを設定するためのタグなんだ。 基本的なところ(left, top, visibleなど)はlayoptでも設定できるんだけど、メッセージレイヤ固有の内容はこのpositionタグを使わないと設定できないの。 |
|
layoptで設定できないことをpositionを使って設定すると。 | |
うん。 まず、widthとheightは、レイヤの幅と高さね。前景レイヤの場合は読み込んだ画像のサイズに自動で設定されるから、layoptにこの属性はないの。 | |
なるほど。 | |
colorは文字の色。RGBを16進2桁で0xRRGGBBという風に並べて書くんだけど・・・ | |
HTMLで#RRGGBBって設定するのと一緒だね。 0xFF0000は真っ赤、0x00FF00は緑、0x0000FFは青、 0x666600は暗い黄色で、0x555555はグレー。 |
|
そういうこと。 最後の opacity は不透明度を設定してるの。255が透明度0で、0が完全な透明。 ここで注意して欲しいのは、layoptにもopacity属性はあるんだけど、positionのopacityとは意味が違うってこと。 |
|
どう違うの? | |
layoptはレイヤ全体の透明度を変更するけど、positionのopacityはレイヤのベースの透明度だけを変更するの。 | |
どっちも一緒に聞こえるんだけど・・・ | |
positionでopacityを変更した場合、文字は透明にならないってこと。 よくゲームでメッセージを表示するウィンドウが半透明になってるのがあるでしょ。あれをKAGでやろうとすると、positionタグのopacity属性を変更すればいいわけ。 |
|
あ、なんか分かったかも。 | |
うん、後で例を見てみようね。 | |
currentってタグは? | |
吉里吉里のメッセージレイヤには「カレントレイヤ」っていう概念があって、それを変更するためのタグなんだよ。 カレントレイヤって言うのは、「今、文字を表示する」ためのレイヤのこと。 上のサンプルだと、メッセージレイヤがmessage0とmessage1の2つ表示してるから、そのどっちに文字を表示するか指定しないといけないでしょ。 |
|
ふむふむ。 | |
これで上のサンプルの動作は予想できるよね。 | |
たぶん・・・・ | |
じゃあ実行して、予想が当たってるかチェックしてみて。 | |
うん、予想通り! | |
じゃあ、次はさっきのopacityの違いを見てみようか。 | |
*start [layopt layer=message0 page=fore visible=true] [layopt layer=message1 page=fore visible=true] [position layer=message0 page=fore left=10 top=10 width=500 height=400 color=0xff0000 opacity=128] [position layer=message1 page=fore left=100 top=250 width=500 height=200 color=0x0000ff opacity=128] [current layer=message1 page=fore] opacityをlayoptを使って変更[l][r] [layopt layer=message1 page=fore opacity=64] positionタグを使って変更[l][r] [layopt layer=message1 page=fore opacity=255] [position layer=message1 page=fore opacity=40] こんな感じ |
|
なるほど〜。 よくわかるよ。 |
|
次は文字の属性を変更する font ね。 下のサンプルを実行してみて。 |
|
*start [layopt layer=message0 page=fore visible=true] [position layer=message0 page=fore left=10 top=10 width=500 height=400 color=0xaaaaaa opacity=128] [er] これがデフォルト。[r] [font size=36 italic=true] 大きい文字でイタリック。[r] [font size=10 italic=false] 小さい文字[r] [font size=24 shadow=false] 影なし[r] [font size=24 shadow=true] 影あり[r] [font size=24 edge=true] 袋文字[r] |
|
fontタグでは他にも色々設定できるけど・・・ | |
リファレンス見て勉強しろってことね。 | |
その通り。 | |
頑張ります・・・ | |
最後に文字の表示速度について。 | |
やっと最後・・・ | |
とりあえず、delayタグと、nowaitタグ、waitタグだけ知っておけば大丈夫かな。 delayタグは文字の表示速度を設定するタグで、属性はspeedが必須。 使うときは [delay speed=10]とか[delay speed=nowait]って感じね。 [delay speed=user]でデフォルトのスピードに戻るの。ここで言うデフォルトって言うのは、吉里吉里を起動した時にメニューに表示されてる[文字表示]-[表示速度]の設定値のことね。 |
|
nowaitタグは [delay speed=nowait] と一緒? | |
基本的には一緒。 ただ、[nowait]の場合は[endnowait]で[nowait]を実行する前のスピードに戻れるの。 |
|
通常は[nowait]を使う方が便利そうだね。 | |
最後のwaitタグは文字の表示とは直接関係ないけど、処理待ちをさせることができるタグ。 たぶん、ゲームを作ってると1度はお世話になるんじゃないかな。 何はともあれ、サンプルで見た方が分かりやすいと思うから、下のサンプルを実行してみて。 |
|
*start 普通に表示。[l][r] [delay speed=5] 表示が速くなります。[l][r] [delay speed=100] ゆっくり表示します。[l][r] [nowait] 一瞬で表示して[r] [endnowait] 元のスピードに戻ります。[l][r] [delay speed=user] ここで5秒待ちます。[wait time=5000][r] はい、これで5秒。 |
|
言い忘れていたけど、吉里吉里で「時間」を設定するときは基本的にはmsだから、秒数x1000をセットしてね。 上の例だと5秒待たせているから、5000を設定してるでしょ。 | |
ほんとだ。 じゃあ、[delay speed=100]って言うのは、0.1秒ってこと? |
|
うん、そうそう。 | |
なるほど〜。 | |
最後に、メッセージレイヤに画像を読み込ませてみようか。 | |
あ、前回おあずけになってたやつだね。 | |
うん。 まずは下の画像をimageフォルダに保存して。 | |
で、下のサンプルを実行してみて。 | |
*start [image storage="base_sample.jpg" layer=baes page=fore] [layopt layer=message0 page=fore left=10 top=150] [position layer=message0 page=fore frame="frame.png"] メッセージレイヤの画像を変更してみました。 |
|
これこれ。 こういうのがやりたかったんだよ。 |
|
見ての通り、positionタグのframe属性でメッセージレイヤに読み込ませたい画像を指定するんだけど、ここで注意しなくちゃいけないのは、frame画像を読み込ませた場合、opacity属性は無効になるからね。 | |
半透明のウィンドウにはできないの? | |
frame画像そのものを半透明にすればいいんだよ。 | |
どうやって? | |
それはまた今度。 | |
けち。 | |
え?なに? | |
なんでもな〜い。 |