Inside KAG3/システム関連

Last-modified: 2016-02-17 (水) 12:52:18

メソッド

kag.add(object)

機能
管理オブジェクトを登録する
引数
object…管理されるオブジェクト
戻り値
なし
備考
objectはKAG終了時(ウィンドウが無効化された時)に、自動的に無効化されるようになる
‐登録から抹消するにはkag.remove()メソッドを使う
‐Window.add()メソッドの説明も参照のこと

kag.addPlugin(plugin)

機能
KAGPluginオブジェクトを登録する
引数
plugin…KAGPluginおよびサブクラスのオブジェクト
戻り値
なし

kag.callExtraConductor(storage, label, onreturn)

機能
右クリックサブルーチンを呼び出す
引数
storage…呼び出し先のKAGシナリオファイル名。空文字を指定すると現在のKAGシナリオファイルと見なす
label…呼び出し先のラベル名。空文字を指定するとKAGシナリオファイルの先頭と見なす
onreturn…無条件で省略して構わない
戻り値
なし
備考
‐厳密には通常のサブルーチンも呼び出せる
‐当メソッドを呼び出すには、シナリオが安定(s、l、pタグで停止)している必要がある(kag.inStableやKAGプラグインのハンドラonStableStateChanged()で判別可能)
‐右クリックサブルーチン中か、すでに当メソッドでKAGシナリオを呼び出している最中の場合、当メソッドは使用できない

ハイパーリンク、グラフィカルボタン、クリッカブルマップで用いる機会が多い。
「KAG Systemリファレンス」の「TJSをもっと使うために」も参照のこと。

; ロードボタンをクリックしたら、system.ksのサブルーチン*loadを呼び出す
[button graphic="load_button.png" exp="kag.callExtraConductor('system.ks','*load')"]

kag.close()

機能
KAGを終了させる。この時、kag.askOnCloseが真なら、終了するか確認のメッセージボックスを開く
引数
なし
戻り値
なし
備考
‐当メソッドを呼び出すには、シナリオが安定(s、l、pタグで停止)している必要がある(kag.inStableやKAGプラグインのハンドラonStableStateChanged()で判別可能)
‐確認ダイアログボックスを開くことなく、直ちに終了させる場合は、kag.shutdown()を呼び出すこと
‐kag.closeByScript()も参照のこと

ハイパーリンク、グラフィカルボタン、クリッカブルマップで用いる機会が多い。
「KAG Systemリファレンス」の「TJSをもっと使うために」も参照のこと。

[link exp="kag.close()"]終了[endlink]
[s]

kag.closeByScript(elm)

機能
closeタグに相当するメソッド。ウィンドウを閉じる
引数
elm…辞書配列オブジェクト。当メソッドはキーaskの値を参照する
戻り値
なし
備考
‐kag.close()を呼び出すとエラーになる場合、kag.closeByScript(%["ask"=>"true"])を呼び出せば正常に動作することがある
‐kag.close(), kag.shutdown()も参照のこと

kag.conductor.pendings.add(tag)

機能
後回しにするタグ配列にタグを追加する
引数
tag…辞書配列オブジェクト。キーtagnameにタグ名、属性名のキーに属性値を登録しておくこと
戻り値
タグが追加された位置
備考
kag.tagHandlers.~が呼び出せない状況下で当メソッドが使える場合がある

コンソールで以下のTJS式を評価させると、カレントのメッセージレイヤに「こんにちは。」が表示される。

kag.conductor.pendings.add(%["tagname"=>"ch", "text"=>"こんにちは。"])

kag.goToStartWithAsk()

機能
最初に戻る(この際、確認ダイアログボックスを開く)
引数
なし
戻り値
なし
備考
‐gotostartタグ、[システム‐最初に戻る]メニューが内部で呼び出しているメソッド
‐確認ダイアログボックスが不要ならkag.goToStart()メソッドを呼び出すこと

kag.process(file, label, countpage = true, immediate = false)

機能
jumpタグに相当するメソッド。指定したKAGシナリオファイルのラベルにジャンプする
引数
file…ジャンプ先のKAGシナリオファイル名。空文字を指定すると現在のKAGシナリオファイルと見なす
label…ジャンプ先のラベル名。空文字を指定するとKAGシナリオファイルの先頭と見なす
countpage…現在のセーブ可能なラベルを「既読」にする場合はtrue、そうでない場合はfalseを指定する。省略時true
immediate…無条件で省略(false)して構わない
戻り値
なし

「KAG Systemリファレンス」の「TJSをもっと使うために」も参照のこと。

kag.remove(object)

機能
管理オブジェクトを登録から抹消する
引数
object…kag.add()メソッドで登録した管理オブジェクト
戻り値
なし
備考
Window.remove()メソッドの説明も参照のこと

kag.removePlugin(plugin)

機能
KAGPluginオブジェクトを登録から抹消する
引数
plugin…KAGPluginおよびサブクラスのオブジェクト
戻り値
なし

kag.shutdown()

機能
KAGを直ちに終了させる
引数
なし
戻り値
なし
備考
‐当メソッドを呼び出すには、シナリオが安定(s、l、pタグで停止)している必要がある(kag.inStableやKAGプラグインのハンドラonStableStateChanged()で判別可能)
‐終了前に確認ダイアログボックスを開く場合は、kag.close()を呼び出すこと
‐kag.closeByScript()も参照のこと

「KAG Systemリファレンス」の「TJSをもっと使うために」も参照のこと。

[link exp="kag.shutdown()"]終了[endlink]
[s]

kag.trigger(name)

機能
トリガーを引き、制御をKAGに戻す。waittrigタグと組み合わせて使用する。「KAG System リファレンス」のwaittrigタグの説明も参照のこと
引数
name…トリガー名
戻り値
なし
備考
‐戻り値が必要な場合はkag.conductor.trigger()メソッドを使うと良い
‐KAG内部でも多数のトリガー(例えばtimeout、not_closed、history、trans、move、quake、click、bgmfade、bgmstop…)を利用している。トリガー名の重複には注意すること

System.touchImages(storages, limitbytes=0, timeout=0)

機能
画像ストレージを読み込み、キャッシュする(必ずキャッシュするとは限らない)
引数
storages…画像ストレージ名の配列
limitbytes…キャッシュ容量の制限値(バイト)
timeout…タイムアウトの制限時間(ミリ秒)
戻り値
なし
備考
詳細は「吉里吉里2 リファレンス」のSystem.touchImages()の説明を参照のこと

イベントハンドラ

kag.onFullScreenMenuItemClick(sender)

機能
[画面‐フルスクリーン]メニューのイベントハンドラ
引数
sender…無条件にkagオブジェクトを渡して構わない(内部的にはsenderを捨てている)
戻り値
なし

kag.onPrimaryRightClick()

機能
右クリックサブルーチンを呼び出す。未設定の場合はメッセージを消す
引数
なし
戻り値
なし
備考
[システム‐メッセージを消す]メニューで内部的に呼び出されているメソッド

kag.onWindowedMenuItemClick(sender)

機能
[画面‐ウィンドウ表示]メニューのイベントハンドラ
引数
sender…無条件にkagオブジェクトを渡して構わない(内部的にはsenderを捨てている)
戻り値
なし

プロパティ

kag.conductor.callStackDepth

ゲッター
callタグ呼び出しスタックの深さを返す
セッター
なし
備考
KAGParser.callStackDepthも参照のこと

kag.conductor.curLabel

ゲッター
現在、実行中のKAGシナリオファイル名(.ks)の現在のラベルを返す
セッター
KAGシナリオファイルの現在のラベルを変更する
備考
‐KAGParser.curLabel、kag.currentLabelも参照のこと
‐通常のラベル、セーブ可能なラベルのどちらも有り得る
‐セッターを使用するのは避けた方が無難

kag.conductor.curLine

ゲッター
現在、実行中のKAGシナリオファイル名(.ks)の現在の行番号を返す
セッター
KAGシナリオファイルの現在の行番号を変更する
備考
‐KAGParser.curLineも参照のこと
‐セッターを使用するのは避けた方が無難

kag.conductor.curLineStr

ゲッター
現在、実行中のKAGシナリオファイル名(.ks)の現在行の文字列を返す
セッター
KAGシナリオファイルの現在行の文字列を変更する
備考
‐KAGParser.curLineStrも参照のこと
‐セッターを使用するのは避けた方が無難

kag.conductor.curStorage

ゲッター
現在、実行中のKAGシナリオファイル名(.ks)を返す
セッター
指定したKAGシナリオファイルを読み込ませる
備考
‐KAGParser.curStorageも参照のこと
‐KAGシナリオファイルを読み込ませる場合は、kag.process()メソッドを使う方が無難

kag.fullScreen

ゲッター
フルスクリーン状態なら真、ウィンドウ状態なら偽を返す
セッター
真を代入すればフルスクリーン状態に、偽を代入すればウィンドウ状態になる
備考
‐ほぼ同様の目的で使われているメンバ変数にkag.fullScreenedがある。kag.fullScreenと同期させる必要があるため、セッターは使用せずに、フルスクリーン状態にするにはkag.onFullScreenMenuItemClick()を、ウィンドウ状態にするにはkag.onWindowedMenuItemClick()を呼び出すことが望ましい
‐内部的にはシステム変数に記録されている
現在は[emb exp="kag.fullScreen?'フルスクリーン':'ウィンドウ'"]状態です。

メンバ変数

kag.clickCount

マウス左クリックした回数。スペースキー、Enterキーの押下でもカウントされる。クリック回数をただ記録しているだけのメンバ変数で、(組み込んだKAGプラグインなどが禁じてない限り)途中で0などに変更しても問題ない。

なお、ハイパーリンク、グラフィカルボタン、チェックボックス、単一行エディット上でマウス左クリックしてもカウントの対象にはならない。

kag.conductor.macros

マクロ名をキー、マクロ定義(の文字列)を値とする辞書配列。
値がvoidなら、そのマクロ名は未定義(または削除済み)であることを意味する。

  • マクロ名に半角英大文字を含む場合、キーは半角英小文字に変換されている。
    例えば、マクロ名がFooなら、該当する要素はkag.conductor.macros.fooとなるので注意
  • マクロ定義内容の末尾に [macropop] という文字列がある

kag.inStable

シナリオが安定(s、l、pタグで停止)しているなら真、そうでなければ偽。kag.callExtraConductor()メソッドが呼び出せるかの判定に使うことが多い。

kag.kagPlugins

KAGPluginオブジェクトの配列。
KAGPluginオブジェクトを登録する場合はkag.addPlugin()を、登録を抹消する場合はkag.removePlugin()を呼び出した方が良い。

kag.keyDownHook

キーが押下されたときに呼び出されるハンドラ(関数)の配列。
登録したハンドラが不要になったら、直ちに配列から削除することが望ましい。

kag.leftClickHook

マウス左クリックされたときに呼び出されるハンドラ(関数)の配列。
登録したハンドラが不要になったら、直ちに配列から削除することが望ましい。

kag.rightClickCall

マウス右クリックで特定のサブルーチンを呼び出すなら真、そうでなければ偽。

kag.rightClickEnabled

右クリックサブルーチン(デフォルトのメッセージレイヤを消すモノ/自作の右クリックサブルーチンを含めて)が有効なら真、無効なら偽。
この値を変更するにはrclickタグを介した方が良い。

kag.rightClickHook

マウス右クリックされたときに呼び出されるハンドラ(関数)の配列。
登録したハンドラが不要になったら、直ちに配列から削除することが望ましい。

kag.rightClickJump

マウス右クリックで特定のラベルにジャンプするなら真、そうでなければ偽。

kag.rightClickStorage

マウス右クリック時に呼び出す/ジャンプするストレージ名。

kag.rightClickTarget

マウス右クリック時に呼び出す/ジャンプするラベル名。

kag.scHeight

画面の高さ(ピクセル)。Config.tjsのscHeightと同じ。

kag.scWidth

画面の幅(ピクセル)。Config.tjsのscWidthと同じ。

kag.tagHandlers

タグ名をキー、ハンドラ(匿名関数)を値とする辞書配列。
ほとんどのタグは、この辞書配列を通して呼び出すことが可能。

下のサンプルではimageタグのハンドラを呼び出している。
キーlayerで文字列"0"を指定していることに注目。
key、layer、graphickey、speedのように、数値や文字列など複数のデータ型を指定できる属性は、文字列で属性値を指定する必要がある(確実を期すなら、属性値は全て文字列で渡す…位の方が良い)。

[iscript]
// [image storage="image.png" layer=0 page=fore visible=true] とほぼ等価
kag.tagHandlers.image(%["storage"=>"image.png", "layer"=>"0", "page"=>"fore", "visible"=>true]);
[endscript]

if~endif、jump、callなどは、KAGParser(ネイティブクラス)の組み込みタグになっている。

関数

askYesNo(message, caption = "確認")

機能
確認ダイアログボックスを開く
引数
message…確認のメッセージ
caption…確認ダイアログボックスのキャプション。省略時は"確認"
戻り値
真…[はい]がクリックされた
偽…[いいえ]がクリックされた
; [はい]なら真が、[いいえ]なら偽が返る
[eval exp="tf.result = askYesNo('本当に良いですか?')"]

dm(message)

機能
コンソールへメッセージを出力する
引数
message…コンソールに出力するメッセージ
戻り値
なし
備考
Debug.message()メソッドの別名(エイリアス)

KAGLoadScript(name)

機能
TJSスクリプトを読み込み、実行する
引数
name…TJSスクリプトファイル名
戻り値
なし
備考
‐Scripts.execStorage()メソッドのラッパー関数。コンソールに読み込み~実行にかかった時間(ミリ秒)を出力する
‐これのラッパー関数としてKAGLoadScriptOnce()がある(現在はデッドコード)

補足

kag.keyDownHook、kag.leftClickHook、kag.rightClickHook用のハンドラに関して

フック(kag.keyDownHook、kag.leftClickHook、kag.rightClickHook)用のハンドラの仕様は以下の通り。

  • 引数なし
  • trueを返した場合、もともとその操作に割り当てられていた機能を実行しなくなる
  • falseを返した場合、もともとその操作に割り当てられていた機能も実行する
    • 値を返さないハンドラ(void)はfalse扱いされているので注意