Inside KAG3/SliderLayer.tjs組み込みのヒント

Last-modified: 2016-03-29 (火) 12:06:47

同梱のkirikiri2\transviewer\SliderLayer.tjsは、そのままKAGで利用することが可能(多少の制約はあるが)。

KAG上でSliderLayerを利用する

組み込み

  1. SliderLayer.tjsをプロジェクトフォルダ名\systemフォルダにコピー
  2. プロジェクトフォルダ名\system\AfterInit.tjsがなければ作成
  3. 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大域音量、全効果音バッファ大域音量を調整する。
手抜きな上に書きかけのため、バグがあるかも知れないけど、雰囲気は掴めるはず(←アバウト)。

filerclick_slider_sample.lzh

注意事項

スライダーにフォーカスがある場合、カーソルキーの左右でつまみが移動してしまう。
この動作が不要な時(クリッカブルマップを併用している場合など)は、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)
説明
つまみのドラッグで呼び出されるイベントハンドラ