スポンサーサイト

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

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

簡単なコンダクタの話

TJSで書かれたKAGはKAGスクリプトを解析して実行しなければなりません。
その解析、実行を行うのがコンダクタです。以下の話はKAGEXでも共通です。


コンダクタの中身はConductor.tjsに書かれています。
コンダクタは「次のタグを探す」→「見つけたタグを実行」を延々と繰り返しています。

KAGスクリプトでコンダクタがやっていることのイメージを書くと
*START
; 次のタグを探す
; 見つけたタグを実行
@jump target=*START

*END
; 指定時間後に*STARTにジャンプする命令
@s
こんな感じです。実際にはコメント部分で色々とやってくれています。
*ENDはウェイトを入れるタグを実行するときにジャンプしてくるラベルです。
KAGの「ウェイト」というのはコンダクタの実行を一時停止することです。
指定時間後にまた*STARTから実行再開します。

例えばfirst.ksに以下のようなスクリプトを書いて実行します。
[wait time=200]
*start|スタート
[cm]
こんにちは。
最初のタグは[wait]です。
初っ端からウェイトが入ったので*ENDにジャンプして200ms後に*STARTにジャンプします。
次のタグは[cm]です。ラベルの処理はここでは説明しません。
[cm]でメッセージレイヤがクリアされました。
ウェイトはないのですぐに*STARTにジャンプ、次のタグを探します。
次のタグは「こ」です。もっと言うと[ch text="こ"]です。
文字は自動的に[ch]タグとして処理されるようになっています。
まずは「こ」をメッセージレイヤに表示します。
次にウェイトを入れます。ウェイトの時間は設定された文字表示速度です(デフォルト「普通」で30ms)。
なので*ENDに飛んで30ms後に*STARTにジャンプします。
おなじことを「ん」「に」「ち」「は」「。」について繰り返します。

「。」の次には何もタグがないので*ENDに飛んで、*STARTへはジャンプせずにそのまま終わりです。
ここでは[wait][cm][ch]タグしか出てきませんでしたが他のタグでも「探す」→「実行」を繰り返す部分は同じです。
※それぞれのタグの動作の中身は基本的にkag.tagHandlersにあります。
スポンサーサイト

タグ : 吉里吉里 KAGEX KAG TJS

カテゴリ : TJS

コメントの投稿

非公開コメント

最新記事
カテゴリ

openclose

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