同梱のkirikiri2\transviewer\SliderLayer.tjsは、そのままKAGで利用することが可能(多少の制約はあるが)。
KAG上でSliderLayerを利用する
組み込み
- SliderLayer.tjsをプロジェクトフォルダ名\systemフォルダにコピー
- プロジェクトフォルダ名\system\AfterInit.tjsがなければ作成
- AfterInit.tjsの先頭に、以下の行を挿入
KAGLoadScript("SliderLayer.tjs");
サンプル
BGM、SEの大域音量を調節
以下はBGM、SE(効果音バッファ0のみ)の大域音量を調節するサンプル。
[loadplugin module="wuvorbis.dll"] [iscript] // 背景レイヤ表画面上にスライダーを2個作成 tf.sliders = new Array(); for (var i = 0; i < 2; i++) { tf.sliders[i] = new SliderLayer(kag, kag.fore.base); with (tf.sliders[i]) { .left = 50; // スライダーのX座標(ピクセル) .top = 50*(i+1); // 同、Y座標(ピクセル) .width = 300; // スライダーの幅(ピクセル) .height = 12; // 同、高さ(ピクセル) .visible = true; // true時、スライダーを表示 } }
// 0番目のスライダーはBGM大域音量を調節する with (tf.sliders[0]) { .min = 0; // スライダーが扱う値の最小値 .max = 100; // 同、最大値 .position = kag.bgm.currentBuffer.volume2 \ 1000; // スライダーの初期値 .onChange = function(pos) { kag.bgm.setOptions(%["gvolume"=>pos]); // スライダーを動かしたらBGMの大域音量を変更 }; }
// 1番目のスライダーは効果音バッファ0の大域音量を調節する with (tf.sliders[1]) { .min = 0; // スライダーが扱う値の最小値 .max = 100; // 同、最大値 .position = kag.se[0].volume2 \ 1000; // スライダーの初期値 .onChange = function(pos) { kag.se[0].setOptions(%["gvolume"=>pos]); // スライダーを動かしたら効果音バッファ0の大域音量を変更 }; } [endscript] [wait time=200] *start|スタート [cm] ; 邪魔なのでメッセージレイヤを消す [layopt layer=message0 page=fore visible=false] ; BGMをループ再生 [playbgm storage="bgm.ogg"] ; SEをループ再生 [playse buf=0 storage="se.wav" loop=true]
厳密には、吉里吉里/KAG終了直前までにSliderLayerオブジェクトを無効化するのが望ましい。
例えば、右クリックサブルーチン内でSliderLayerオブジェクトを使う場合、右クリックサブルーチンを抜けるまでに無効化すると良い。
右クリックサブルーチン
以下はスライダーを使う右クリックサブルーチンのサンプル(吉里吉里2/KAG3によるノベルゲーム開発の右クリックサブルーチンを改造したもの)。
上から順にメッセージ表示速度、既読メッセージ表示速度、BGM大域音量、全効果音バッファ大域音量を調整する。
手抜きな上に書きかけのため、バグがあるかも知れないけど、雰囲気は掴めるはず(←アバウト)。
注意事項
スライダーにフォーカスがある場合、カーソルキーの左右でつまみが移動してしまう。
この動作が不要な時(クリッカブルマップを併用している場合など)は、focusableプロパティをfalseにし、更にSliderLayer.onKeyDown()メソッドをコメントアウトしておくと良い。
SliderLayerクラス・リファレンス
スーパークラス
Layerクラス
コンストラクタ
SliderLayer.SliderLayer
- 機能/意味
- SliderLayerオブジェクトの構築
- タイプ
- SliderLayerクラスのコンストラクタ
- 構文
- SliderLayer(window, parent)
- 引数
- window…このSliderLayerオブジェクトを保有することになるウィンドウオブジェクト
parent…親レイヤオブジェクト。nullを指定するとプライマリレイヤとなる - 戻り値
- なし(void)
- 説明
- SliderLayerオブジェクトを非表示状態で構築する
メソッド
SliderLayer.assign
- 機能/意味
- SliderLayerオブジェクトの情報をコピーする
- タイプ
- SliderLayerクラスのメソッド
- 構文
- assign(src)
- 引数
- src…コピー元SliderLayerオブジェクト
- 戻り値
- なし(void)
- 説明
- SliderLayerオブジェクトsrcの情報をコピーする。コピーされるのはmin、max、positionの値のみ
プロパティ
SliderLayer.max
- 機能/意味
- 最大値
- タイプ
- SliderLayerクラスのプロパティ(読み書き可能)
- 説明
- スライダーの最大値を示す
SliderLayer.min
- 機能/意味
- 最小値
- タイプ
- SliderLayerクラスのプロパティ(読み書き可能)
- 説明
- スライダーの最小値を示す
SliderLayer.position
- 機能/意味
- 値
- タイプ
- SliderLayerクラスのプロパティ(読み書き可能)
- 説明
- スライダーの値(現在値)を示す
イベント
SliderLayer.onChange
- 機能/意味
- スライダーの値が変わった
- タイプ
- SliderLayerクラスのイベント
- 構文
- onChange(pos)
- 引数
- pos…新しいスライダーの値
- 戻り値
- なし(void)
- 説明
- つまみのドラッグで呼び出されるイベントハンドラ