スポンサーサイト

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

カテゴリ : スポンサー広告

pbgmマクロ(3) - 配列の利用

前回 pbgmマクロ(2) - ファイル名を変えてしまう

前回はファイル名を変えて[pbgm]タグを作りました。
今回は配列を利用してファイル名を変えなくても済むようにします。

配列については「KAGで配列を使う(1) - 配列とは?」を参照


配列にファイル名を代入しておき、その配列を使ってファイル名を指定します。
; 配列(sf.music_list)を準備
@eval exp="sf.music_list = ['innocent.oog', 'AtoZ.ogg', 'ASAP.ogg']"
; マクロ定義
@macro name="pbgm"
@playbgm storage="&sf.music_list[+mp.no]"
@endmacro

マクロ定義の前で配列(sf.music_list)を準備します。(KAGで配列を使う(4) - 配列の初期化)
※ sf.music_list[0]に'innocent.ogg', sf.music_list[1]に'AtoZ.ogg', sf.music_list[2]に'ASAP.ogg'が代入されます。
fではなくsfを使っています。セーブデータごとに曲リストは変わらないはずだからです。
これをfにしてしまうと、後でパッチを出して曲リストを変えたときに、困ったことになります。
セーブデータごとに流れる曲が変わったりしてしまうかもしれません。

マクロ自体は前回と同様に簡単です。
配列を使って曲を指定します。配列の添え字は+mp.noとしています。(mpについては⇒マクロでmpを使う)

例えば@pbgm no="1"のとき
sf.music_list[+mp.no]のmp.noは'1'です。
 ↓ []の中が先に評価されます
sf.music_list[+'1']
 ↓ 単項+演算子によって'1'が変換されます(+については⇒文字列を数値に変換する - 単項+演算子)
sf.music_list[1]
 ↓
'AtoZ.ogg'
結局"AtoZ.ogg"が再生されます。

番号ごとに流す曲を替えるには、f.music_listの部分にファイル名を追加するだけなので簡単です。



ところで[eval]タグを使うと、曲数が増えた時にその行が横に長くなって大変です。
そこで[iscript]タグが使えます。([iscript]については⇒[iscript] [endscript]タグを使う)
[iscript][endscript]の間のTJSスクリプトなら、途中で改行することができます。
; 配列(f.music_list)を準備
@iscript
f.music_list = [
'innocent.oog',
'AtoZ.ogg',
'ASAP.ogg'
];
@endscript

このように一曲ごとに改行して書くと見やすいかもしれません。まあ好きなようにしてください。
配列の[]が離れていてわかりづらいですが、最初と最後の[と]がそれです。
]の後にセミコロンを付けるのを忘れないでください。


次回はsf.music_listの中身をテキストファイルから読みだすようにしてみます。
スポンサーサイト

タグ : 吉里吉里 KAG 講座

カテゴリ : KAG

コメントの投稿

非公開コメント

最新記事
カテゴリ

openclose

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