空想曲線

吉里吉里2/KAG3でのゲーム制作に使える小ネタ置き場。ゲーム用素材も置いてます。

吉里吉里/KAG:forループを使ってレイヤを全消去する  

2011-01-15[Sat]
cm0
tb0

ちょっとだけTJS使うよ(・ω・)

for構文ってなによ


使い方は色々あるけど、よく使うのは繰り返し演算。


for (初期化文; 条件; 式) { 文 }


1.最初に初期化文を実行する
2.ループの条件が評価される。ならforループ終了、なら実行。
3.式を評価({ 文 }を実行)してに戻る



全レイヤ消去スクリプト


[iscript]
for (var i=0; i < kag.back.layers.count; i++)
 {
  kag.back.layers[i].fillRect(0, 0, 800, 600, 0x00FFFFFF);
  kag.back.layers[i].visible=false;
 }
[endscript]


kag.back.layers.countってのは前景レイヤの裏画面の枚数です。
前景レイヤ0から順番に透明で塗りつぶして不可視にしています。

が、ふと思った。
「レイヤが多いなら freeimage の方がいいのかも……」
作品によっては数十枚使う場合もあるし。
MainWindow.tjs を見て freeimage タグの定義部分を探してみる。

ちょっと書きなおす(`・ω・´)ノ


[iscript]
for (var i=0; i < kag.back.layers.count; i++)
 {
  kag.back.layers[i].freeImage();
 }
  kag.back.base.freeImage();
[endscript]


全ての前景レイヤの裏画面と背景レイヤの裏画面を解放。
ああ、でもベースレイヤは解放しちゃマズイか。
暗転したいならベースレイヤだけ黒で塗りつぶしてしまうか
黒の背景画像を読み込ませた方がいいかもしれません。



メッセージレイヤの裏画面だけを全消去


[iscript]
for (var i=0; i < kag.back.messages.count; i++)
 {
  kag.back.messages[i].clear();
 }
[endscript]


このあと、クロスフェードトランジションをかければ
全てのメッセージレイヤに書かれたテキストがゆっくり消えます。
不可視にするだけなら kag.back.messages[i].visible=false; に変更してください。

では、これをマクロに組み込みましょう。
[ iscript ]~[ endscript ]はマクロにできないのでマクロから呼び出します。


◆マクロを定義しているシナリオファイル内
[macro name="全消去"]
[backlay]

; *all_eraseをサブルーチンコール
[call storage=hoge.ks target=*all_erase]
[trans method=crossfade time=1000]
[wt]
[endmacro]


◆hoge.ks内
*all_erase
[iscript]
 さっきの for 構文を放り込む
[endscript]
[return]


あとは使いたい場所で [ 全消去 ] と記述します。
「トランジションとかいらん、とりあえず消えたらいい」ときは
back を fore に変えればいいだけです。メッセージレイヤは普通に[ cm ]か[ ct ]で。

全消去したときに真っ黒じゃ味気ないなぁと思ったら背景レイヤに画像入れてみるとか。
書き方はこんなカンジ↓
kag.back.base.loadImages(%['storage'=>'hoge.jpg']);
ベースレイヤの裏画面にhoge.jpgって画像を読み込みなさいという命令です。

ムリに使う必要はないけどレイヤが増えたときに
マクロを修正する手間が省けていいです。

■追 記
マクロ内からcallタグで呼び出さずに済む方法発見。
上記のスクリプトを関数にしてしまえばいいことに気づく。
関数名をalleraseとかテキトーにつけておいて
マクロ内で[eval exp="allerase()"]って書けば同じ処理をしてくれる。


関連記事

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://kopacurve.blog33.fc2.com/tb.php/49-7c028f8b
この記事にトラックバックする(FC2ブログユーザー)

現在のページ

Category

Link

Comment

Mailform

Author

Twitter