プログレスバー(英:Progress Bar)とはタスクの進行を運ぶために使われているグラフィカルユーザインタフェースの要素の一つである。プログレスメーター (Progress Meters) とも呼ばれる。とのことですが,今回取り上げるのは,
しばしば、ダウンロードやファイル転送のようにパーセント形式で表示される際、表現の一つとして伴われる。
// PerSecond $progress(%playback_time_seconds%,%length_seconds%,15,'■','□')◆プログレスバー2
// PerSecond $progress2(%playback_time_seconds%,%length_seconds%,15,'■','□')$rgbで色を付けたりもできます.
*1 : 同時には使えないっぽい?
$drawrect(X,Y,W,H,brushColor-R-G-B penColor-R-G-B OPTIONS)
XとY | 左上頂点の座標. 省略するか0を指定するとウィンドウサイズの最小値になる(怪) |
---|---|
WとH | 矩形の幅と高さを定義する. 省略するか0を指定するとウィンドウサイズの最大値になる. |
brushColorとpenColor | ブラシとペンの色を-R-G-B形式で指定する.(例:-255-0-0なら赤色) -nullを指定すると無効になる.(例 brushColor-null) -SYSCOL-x(xは0から?までの数値)を指定するとウィンドウズのテーマに沿った色になる |
OPTIONS | 透過処理やぼかしのような拡張機能を使う時にはペンの色のみを指定できます*2. もしあなたがブラシの色を指定していれば,ペンの色として扱われます. 枠だけを描画したいならば,brushcolor-nullを指定して下さい. |
$drawrect(10,20,100,30,pencolor-0-0-255 brushcolor-null width-2 alpha-100 blur-2)(10,20)を左上頂点の座標として幅100,高さ30の長方形を描画する.
//******************************** // Global //******************************** //******************************** // Background //******************************** //******************************** // PerTrack //******************************** // 曲の総時間は曲ごとに決まるので,曲毎に再描画すれば良い // 曲の秒数を横幅として矩形を描画する $drawrect(10,10, %length_seconds%,10,pencolor-255-0-0 brushcolor-null width-1 alpha-100 blur-1) //******************************** // PerSecond //******************************** // 現在の再生時間は1秒ごとに更新する // 現在の再生秒数を横幅として塗りつぶした矩形を描画する $drawrect(10,10,%playback_time_seconds%,10,pencolor-255-0-0 brushcolor-0-0-255 width-1 alpha-100 blur-1)これを実行すると次のようになります.
//******************************** // Global //******************************** //-- 設定 // 左上座標 $puts(PROGRESSBAR_POINT_X, 10) $puts(PROGRESSBAR_POINT_Y, 50) // 幅 $puts(PROGRESSBAR_WIDTH_MAX, 100) // 高さ $puts(PROGRESSBAR_HEIGHT, 10) //-- 処理 //- プログレスバーの横幅を取得 // プログレスバーを空にするフラグ $puts(PROGRESSBAR_BLANK_FLAG, 0) // 再生中でないならプログレスバーは空 $if(%_isplaying% ,$puts(PROGRESSBAR_WIDTH,$muldiv(%playback_time_seconds%, $get(PROGRESSBAR_WIDTH_MAX),%length_seconds%)) ,$puts(PROGRESSBAR_BLANK_FLAG,1) ) // 再生時間が0の時にプログレスバーの長さが0になってしまう // 矩形の描画で幅を0にするとウィンドウ一杯に描画してしまうので,0の時にはバーの中身を表示しないようにする $ifequal($get(PROGRESSBAR_WIDTH),0, $puts(PROGRESSBAR_BLANK_FLAG, 1) , $puts(PROGRESSBAR_BLANK_FLAG, 0)) //******************************** // Background //******************************** //******************************** // PerTrack //******************************** // 曲の総時間は曲ごとに決まるので,曲毎に再描画すれば良い // 曲の秒数を横幅として矩形を描画する $drawrect($get(PROGRESSBAR_POINT_X),$get(PROGRESSBAR_POINT_Y),$get(PROGRESSBAR_WIDTH_MAX),$get(PROGRESSBAR_HEIGHT),pencolor-255-0-0 brushcolor-null width-1 alpha-100 blur-1) //******************************** // PerSecond //******************************** // プログレスバーの中身を描画しないフラグが1なら描画しない.そうでないなら描画する $ifequal($get(PROGRESSBAR_BLANK_FLAG), 1 , ,$drawrect($get(PROGRESSBAR_POINT_X),$get(PROGRESSBAR_POINT_Y),$get(PROGRESSBAR_WIDTH),$get(PROGRESSBAR_HEIGHT),pencolor-255-0-0 brushcolor-255-0-0 width-1 alpha-100 blur-1) )これを実行すると次のようになります.
// プログレスバーの長さ float progress_length = プログレスバーの長さ; // プログレスバーの現在の長さ float progress_playback = (再生時間 / 曲の長さ) * progress_width再生時間/曲の長さ で,現在何%再生しているのかを算出し,
// 実際の計算: (再生時間 * プログレスバーの最大幅) / 曲の長さ $muldiv(再生時間,プログレスバーの最大幅,曲の長さ)ちょっとややこしいですが,これは実際の計算をイメージするとすぐにわかります.
// 最初に挙げた例での計算(直観的な計算方法) (再生時間 / 曲の長さ) * プログレスバーの長さ = 必要なプログレスバーの長さ // muldivを使った計算 (再生時間 * プログレスバーの長さ) / 曲の長さ = 必要なプログレスバーの長さ除算と乗算だけの式なので順番がどうなろうと関係無いということですね*3.
*2 : ブラシの色は指定できません
*3 : 改めて文章にするとあまりにも当たり前なので恥ずかしくなってきた