前回はdoCommand()を使ってワールド拡張のタグを呼び出す方法を紹介しましたが、もっといい方法を教えてもらったので紹介します。
kag.addTag()という関数を使うとコンダクタに次のタグを直接登録できます。まずは実際の使用例です。
function showStage() { // @stage stage=道路 stime=昼 fade=1500 sync というタグを次のタグとして登録 kag.addTag("stage", %[ stage:"道路", stime:"昼", fade:"1500", sync:"true" ]); } function showStage2() { // @道路 夜 fade=1500 nosync というタグを次のタグとして登録 kag.addTag("道路", %[ 夜:"true", fade:"1500", nosync:"true" ]); } function flashStage() { // @stage hide fade=1000 sync というタグを次のタグとして登録 kag.addTag("stage", %[ hide:"true", fade:"1000", sync:"true"]); // @stage show fade=1000 sync というタグを次のタグとして登録 kag.addTag("stage", %[ show:"true", fade:"1000", sync:"true"]); }
@linemode mode=vn @eval exp="showStage()" 道路(昼)の背景を表示しました。 @eval exp="showStage2()" 道路(夜)の背景を表示しました。 @eval exp="flashStage()" 背景を点滅しました。
Override.tjsで定義した関数(showStage, showStage2)を[eval]タグで呼び出しています。関数の定義は[iscript][endscript]を使っても問題ありません。
kag.addTagには第1引数としてタグ名、第2引数として属性が入った辞書配列を渡します。
辞書配列の値はすべて文字列になるので注意してください。つまり、 show:true ではなく show:”true” です。大抵の場合問題になりませんが、稀に文字列でないと駄目な事もあるので必ず文字列にしておくといいです。
showStage2()のように省略記法も使えます。ksスクリプトで属性値を省略したときはtrueになるので、タグで省略されている部分は辞書配列上で”true”を渡しています。
flashStage()のように2つ以上続けて登録もできます。先に登録されたものから順に実行されます。
解説が長くなってしまうので、kag.addTagのもう少し詳しい解説は次回の記事に続きます。