BoxBlurPlugin概要: LayerクラスのdoBoxBlur()を使い、時間変化と共にレイヤー上の画像を 明瞭→不明瞭、不明瞭→明瞭などぼやかしたりするプラグイン。 こういうの無かったなぁ、と思って。 使い方: 前提スクリプトの BoxBlurResore.tjs を、system/Override.tjs あたりに Scripts.execStorage("BoxBlurRestore.tjs") ってかいておく。 その後、scenario/first.ks の先頭あたりで、プラグイン本体を以下のように 呼び出す。 [call storage="BoxBlurPlugin.ks"] これで [boxblur_...] タグが使用できるようになる。 ゲーム中で、baseの表画面をこのプラグインでぼやかすには、以下の ように実行する。 [boxblur_init] [shimmer_start page=fore layer=base startx=0 endx=63 wait] 実装の内部情報: [boxblur_start]時に指定レイヤの表示内容を記録し、タイマ割り込みごとに 記録した内容をレイヤにコピーした上でdoBoxBlur()を実行している。 従って、[boxblur_start]の後、[image]などで対象レイヤの画像を変更 しても、すぐにタイマで上書きされてしまうことに注意。 画像を変更するなら[boxblur_stop]で停止してから。 タグリファレンス: [boxblur_init reset=] 説明: boxblurを初期化する。実行中の全レイヤーのブラーは停止され、削除される 引数: reset= boxblur実行中だったレイヤを停止した際に、そのレイヤの画像を 元に戻すかどうか。def=false [boxblur_start page= layer= time= startx= endx= starty= endy= loop= ...] 説明: 指定したレイヤのboxblurを開始する。開始直前にレイヤに表示されている 画像を内部的に保存し、タイマごとにそれをゆがめて表示する。 引数: page= ブラーを実行するページを指定する。省略すると'fore'が対象 layer= ブラー実行するレイヤを指定する。省略すると'base'が対象 srcfile=ブラーの対象とする画像を読み込む。通常は、[boxblur_start] した時に画面に表示されていた画像が対象となるが、画面の 画像が加工されていたりした場合に改めて読み直すために使用する wait= 該当ブラーが終了するまで待つ canskip=waitが指定されたとき、clickでスキップできるかどうか。def=true ※その他の引数は[boxblur_opts]と同一 [boxblur_stop page= layer= reset=] 説明: 指定したレイヤのboxblurを停止する 引数: page= ブラーを停止するページを指定する。省略すると全ページが対象 layer= ブラーを停止するレイヤを指定する。省略すると全レイヤが対象 reset= 停止した際に、そのレイヤの画像を元に戻すかどうか。def=false [boxblur_wait page= layer=] 説明: 指定したレイヤのブラー終了を待つ。無限ループしているブラーが あると戻ってこなくなるので注意。 引数: page= ブラーを待つページを指定する。省略すると全ページが対象 layer= ブラーを待つレイヤを指定する。省略すると全レイヤが対象 canskip=ブラーをclickでスキップできるかどうか。def=true [boxblur_opts page= layer= interval=] 説明: boxblurのオプションを指定する。ブラー動作中にも変更できる。 引数: page= オプション変更するページを指定する。省略すると全ページが対象 layer= オプション変更するレイヤを指定する。省略すると全レイヤが対象 startx= ブラー開始時のブラーX成分を指定。def=0 endx= ブラー終了時のブラーX成分を指定。def=63 starty= ブラー開始時のブラーY成分を指定。def=0 endy= ブラー終了時のブラーY成分を指定。def=63 time= ブラーが終了するまで(startx→endx、starty→endy)の時間。ms単位 def=2000 loop= ループするかどうか。ループする場合はstartx→endx→startxの ようにループする 0: ループしない(def) 1〜 ループする -1: 無限ループする interval=画面の更新間隔(ms, def=50)。50なら1000/50 = 20回更新/秒 おまけ。 [boxblur xblur= yblur=] 説明: 指定したレイヤにboxblurをかける。KAGの上からできないから一応。 やってることは[eval exp="xxxlayer.doBoxBlur(xblur, yblur)"]だけ。 引数: xblur= 横方向のブラー成分 yblur= 横方向のブラー成分