変数について
変数を操作するには
NS KAG そのものには、変数を取り扱う機構がありませんので、[eval]タグを用いて JavaScript へ直接アクセスすることで変数を取り扱います。
[eval]タグは、o2_exp 属性の値に JavaScript 式を直接記述することで、その式をブラウザに実行させることができる極めて強力なタグです。
[eval]タグを用いて f.natsumi という名前の変数に "Hello, world!" という文字列を代入するには、以下のように記述します。
[eval o2_exp="f.natsumi = 'Hello, world!';"]
変数の種類
変数には、以下の種類があります。変数の種類によって、変数名の頭には決まったプレフィックス(たとえば "f." など)を付加しなければなりません。
各変数のふるまいは以下の通りです。
セーブ変数
プレフィックスは "f." です。
セーブ変数は[save]タグによってコンテンツの状態と共に保存され、[load]タグによってコンテンツの状態と共に復元される変数です。
コンテンツを再読込したり、コンテンツの最中にブラウザを閉じた場合にはセーブ変数の値は消えてしまいますが、[load]タグによってそのスロットに収められたコンテンツの状態と共に復元することができます。
システム変数
プレフィックスは "sf." です。
システム変数に格納した値は、コンテンツを再読込したり、コンテンツの最中にブラウザを閉じた場合にも消えません。
一時変数
プレフィックスは "tf." です。
一時変数は、コンテンツの途中で値を一時的に保存したいときに使用します。
コンテンツを再読込したり、コンテンツの最中にブラウザを閉じた場合には一時変数の値は消えてしまいます。
また、[save]タグを使用してコンテンツの状態を保存する際も、一時変数の情報は保存の対象に含まれません。
マクロ変数
プレフィックスは "mp." です。
マクロ変数は読み込み専用ですので、値を代入しないでください。
マクロが実行されている間、そのマクロに渡された属性および値が格納されている変数です。
マクロ内部で、そのマクロに渡された属性および値を利用したいときに参照します。
詳しくは「マクロについて」を参照してください。
環境変数
プレフィックスは "ev." です。
環境変数は読み込み専用ですので、値を代入しないでください。
novelsphere.js によって提供されている環境変数の一覧については「環境変数リファレンス」を参照してください。
通常、セーブデータはブラウザ上に保存されますので、別のブラウザや別の端末から同じコンテンツを再生した場合、セーブデータは別々のものとなります。しかし、ノベルスフィアから配信される novelsphere.js コンテンツを再生する際には、セーブデータはブラウザ上ではなくプラットフォーム上のサーバに保管されます。この場合、上記の変数のうち「セーブ変数」と「システム変数」は、サーバ上に保管されますので、ノベルスフィアのアカウントごとに、複数のブラウザや端末の間でこれらのセーブデータを同期することができます。
条件判定
条件分岐に関わるタグを使う方法
novelsphere.js コンテンツでは、条件分岐に関わるタグを利用することで、コンテンツの進行を分岐させることができます。
例えば、[if]タグは o2_exp 属性の値に JavaScript 式を記述し、その式が真でなければ次の[endif]タグの箇所まで処理を行いません。
[if o2_exp="f.stat != 0"]
この部分は、変数f.statの中身が0でない時のみ実行されます。
[endif]
条件分岐を司るタグには、[if]タグ、[else]タグ、[elsif]タグ、[endif]タグ、[ignore]タグ、[endignore]タグがあります。詳しくは「タグリファレンス」を参照してください。
o2_cond 属性を使う方法
[macro]タグ、[endmacro]タグ、[if]タグ、[else]タグ、[elsif]タグ、[endif]タグ、[ignore]タグ、[endignore]タグを除く全てのタグは、各タグ固有の属性に加え、o2_cond という属性を持っています。
この属性の値に JavaScript 式を記述すると、その式が真であるときのみそのタグが実行されます。
変数 f.stat の中身が 1 であるときのみ、red という画像を表示します。
[image storage="red" layer="base" page="fore" o2_cond="f.stat == 1"]
エンティティ
タグの属性の値に "&" から始まる文字列を指定すると、"&" に続く文字列は JavaScript 式として評価され、その値にはその評価結果が指定されたとみなされます。
この機能をエンティティといいます。
[eval o2_exp="tf.color = '0xff0000'"]
[font color=&tf.color]
この部分の文字は赤色で表示されます。