備忘録

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

csvファイルの中身 基本的な記述例など

すっかり遅くなってしまいました。
予告通り今回はcsvについて突っ込んで見てみましょう。

と言ってもやはり基本的な内容に終始します。
各定義についてはいずれまとめようと思いますので、しばしお待ちを。


お手元の適当なcsvファイルを開いて確認しながら読んでいくと便利でしょう。




●csvファイルの役割・仕様について



前回の繰り返しになりますが、
csvファイルはスキンのパーツ配置やその挙動を指示するためのものです。

そのプロセスを簡略に示すと、

1.使用する画像(動画)・フォントの指定(#IMAGE定義・#FONT定義・#LR2FONT定義)
2.画像からパーツの切り出し(#SRC_***定義、***はIMAGE、BUTTON、TEXTなど) ※動画は部分的切り出し不可能
3.切り出したパーツの配置(#DST_***定義、同上)

となります。


また、#SRC定義や#DST定義については様々な指示が可能であって、
たとえば

【特定の時間だけ表示したい】
【特定の条件の時に表示したい】
【パーツを半透明にしたい】
【パラパラアニメを表示したい】    などなど

このような指示が各スキンの特徴を決定づけるものになります。
もちろん、あれやこれやとアニメーションさせまくったり透過しまくったり動画を使いまくったりすると
動作に負担をかけることになりますので、(作りたいスキンの性質によりますが)ほどほどにしましょう。



では、簡単に各プロセスについてみてみましょう。


まず、画像の指定から。

(以下、サンプル画像はht7v2 曲セレスキンより)

csv_image_sample.png

これは#IMAGE定義ですが、#LR2FONT定義もほぼ同様です。
#FONT定義については少しだけ勝手が異なりますがここでは割愛。

#IMAGE定義で指定した画像は上から順に0~番号が割り振られていき、
#SRC定義ではこの番号で画像を指定することになります。

ここに見える#IF、#ELSEIFは条件分岐用の定義になります。詳しくは後日各定義について触れるときに紹介します。



次にパーツの切り出しと配置について。この2つはセットなのでまとめて扱います。
実際定義するときも、片方が欠けるとエラーを吐きます。

今回は一番よく使う#SRC_IMAGEと#DST_IMAGEですが、他も基本は変わりません。

csv_timer_sample.png

まず#SRC定義でパーツを切り出します。

grは画像番号になります。この場合は3。

x、y、w、hは#SRC・#DST共通で、それぞれ
パーツ左上のx座標、パーツ左上のy座標、パーツの幅、パーツの高さ (いずれも単位はドット)
になります。


パラパラアニメはここで指定します。
ピカグレやフルコンフラッシュ等によく使われる手法です。
各コマのパーツをひとつの画像内に連続(タテorヨコ)して配置しておきます。
#SRC定義で全コマまとめて切り出し、div_xまたはdiv_yコマ数分だけ分割します。

下はサンプル。(ht7v2 曲セレのフルコンランプ)
fullcom_lamp.png
サンプル・画像中央。これは横に3つ並んでいます。切り出すのは青枠内

csv_full-lamp_sample.png

でdiv_x=3で3分割。cycleで1サイクルの表示時間(ミリ秒)を指定。0だとアニメーションしませんので注意。
またこのパラパラアニメはloopの時間の影響を受けないので、パーツ自体を消さない限りずっとアニメーションし続けます。
#DST定義で配置するときは1コマ分のサイズ(この場合#DST定義のwは#SRC定義のwの1/3)を指定します。


ちなみに、ボタンの配置の際はこのパラパラアニメの要領で定義します。
コマ数=クリックして変化する項目の数。
ただし、ボタンの場合は項目数が決まっているので、各ボタンに対しdiv_x(またはdiv_y)の値は固定になります。
難易度フィルタの場合、ALL/BEGINNER/NORMAL/HYPER/ANOTHER/INSANEの6項目なのでdiv_x(またはdiv_y)の値は6。
異なる値に設定すると動作がうまくいかなくなると思われます。



次に#DST定義で切り出したパーツを配置するわけですが、
timeとある部分はタイマー(後述)が作動してからの時間(ミリ秒単位、1000で1秒)を示しています。
そして#DST定義は「ある時間におけるパーツの状況」を決定する定義になります。

上の例では、#DST定義が2行あります。
1行目のtimeは1000ですから、(画像にはありませんがタイマーは0、すなわち曲セレシーン開始から)1000ミリ秒=1秒後の状況を示します。
この場合、このパーツは曲セレ開始後1秒経つと初めて表示され、その位置は(x座標、y座標)=(0、-95)になります。
次に2行目を見ると、timeは1400で、yの値が0に変わっています。
これは前の状態から0.4秒でy座標が95移動(=下に95ドット移動)することを意味しています。

このように、#DST定義ではある時間ごとのパーツの状況を記述していく形になります。
アニメーション量が多かったり複雑であったりすると行数は増えることになります。


パーツを動かす基本として、

xを変えると横に、yを変えると縦に移動し、wを変えると幅が、hを変えると高さが変化します。
またwとhに関しては、負の数を指定すると逆向きのアニメーションが可能です。
w0→w100・・・右に伸びていく
w0→w-100・・・左に伸びていく

accの項目はアニメーションのタイプを指定できます。
0:等速 1:加速 2:減速 3:不連続
1はフェードアウトに、2はフェードインによく使われます。3はよくわかりません。


#DST定義はこれで終わりではありません。
気を付けるべきは「loop」の部分です。

(上の画像の続き)
csv_loop_sample.png

loopはアニメーションを繰り返す時間(←これ重要)を指定するものです。
#DST定義は上の行から順に処理されていき、最後の行が終わった後どうするのかをここで指定するのですが、
0にするとtime0から(最初の行からではない)繰り返します。
上の例でアニメーションだけループするには、loopを1000にします。
一通りアニメーションしてそのまま表示し続ける場合は最終行のtime(上の例では1400)とloopを同じにします。
一通りアニメーションした後消滅させるには-1を記述します。

定義の後ろの方にあって忘れがちですが、この記述を忘れるとパーツは表示されなくなります。
また、loopは最初の#DSTのみ記述します。


さらに、op1~3も注意すべきポイントです。
ここではそのパーツを表示する条件を3つまで指定できます。特にない場合は0を記述。
上の例では、op1は52となっているので、エクストラモードでない時に表示されます。
この条件指定は(op1かつop2かつop3)であり、全て満たしているときのみ表示されます。
また、!か-(マイナス)を付けると条件が反転します。-52=エクストラでなくない時=エクストラの時

op1~3も最初の#DSTのみ記述します。

ここでの条件指定と#IFでの条件指定の違いはまた後日。



各シーンのtimer値や出現条件のop値などは
LR2files\スキン関連ドキュメント
に関連テキストがありますので、そちらをご参照ください。




ほかにまだまだ書くべきことはたくさんありますが、
とりあえずこれで基本は押さえられたかと思います。

各定義や#SRC・#DSTの各項目については後日触れますので、
今回書けなかった点はそちらで紹介しようと思います。
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://ht3217835367723874.blog.fc2.com/tb.php/3-85c6e13a
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。