foobar2000のwsh panel modのサンプルコードその3
カテゴリ:パソコン関連 ■2015/04/21
« foobar2000のwsh panel modのサンプルコード番外編-資料1 インターフェイス | | foobar2000のwsh panel modのサンプルコードその4 »
« foobar2000のwsh panel modのサンプルコード番外編-資料1 インターフェイス | | foobar2000のwsh panel modのサンプルコードその4 »
テーマ『動作するボタンを作る』。
ボタンが作れるとfoobar2000のインターフェイスが格段に楽になるんじゃないかな。
単純な再生や停止だけではなく、メニューに現れるほぼすべての機能をボタンに出来ます。
まだサンプル画像&サンプルコードをダウンロードしてない人はこちらで。
置き場所はfoobar2000のwsh panel modのサンプルコード {+ foobar2000::カスタマイズ}に書いてあるのでよろしく。
『カーソルを置くと赤くなり、押すと次の曲に演奏が移るボタン』です。Playback/Nextと同等、というかそのものです。sample3.txtを読み込んでください。
スクリプトを晒します。
// ==PREPROCESSOR==
// @name "Sample3 Button"
// @author "Junya Renno"
// ==/PREPROCESSOR==
var imgpath = fb.ProfilePath+"/skin/sample/";
var g_hover = 0;
var button1 = gdi.Image(imgpath+"button_sample_1.png");
var button2 = gdi.Image(imgpath+"button_sample_2.png");
function on_paint(gr){
var button;
if (g_hover == 0){
button = button1;
} else if (g_hover == 1){
button = button2;
}
gr.DrawImage(button,0,0,button1.Width,button1.Height,0,0,button1.Width,button1.Height);
}
function on_mouse_lbtn_down() {
if (g_hover){
fb.RunMainMenuCommand("Playback/Next");
g_hover = 0;
}
}
function on_mouse_move(x,y){
if (x<button1.Width && y<button1.Height){
g_hover = 1;
} else {
g_hover = 0;
}
window.Repaint();
}
function on_mouse_leave(){
g_hover = 0;
window.Repaint();
}
今回説明すべき点は、on_mouse_move(x,y){}でカーソルが入ってきたことを検知してフラグを立て、on_paint(gr){}で画像を切り替えるところです。
on_mouse_leave(){}でカーソルが出て行ったところでフラグを戻します。
1パネル1ボタンであれば、どのボタンを押したか探す手間が省けます。悪くはない手です。
1枚のパネルで複数のボタンを作る場合は、カーソルのx,yを元に分岐処理します。
on_mouse_lbtn_down(){}のブロックに、マウスクリックされた場合の処理を書きます。
簡単な操作系ならfb.Play()とかfb.Stop()とかfb.Next()とかの命令を書けばいいんですが、ちょっと変わった命令をしたいときにはfb.RunMainMenuCommand()を使います。
これはメニューをそのまま実行できる便利なコマンドです。
書式とかはPreferencesのキーボードショートカットでActionのところにでてくる形式です。
ただ、厳密に同じ文字列でないと実行してくれません。Outputデバイスの指定のときに半角空白が何個か混じっていて、ひどく通すのに苦労した経験があります。
モード切替的なボタンのコードはsample4.txtに書きました。
こっちは『赤くなっている時、10秒たったら次の曲に移るボタン』です。
こちらはコールバックにon_playback_time(){}を使い、1秒ごとにチェックしています。
次回は『つまみ付きのボリューム・スライダ』を作ります。
では、また。
<< トップページに戻る
カテゴリ:パソコン関連
« foobar2000のwsh panel modのサンプルコード番外編-資料1 インターフェイス | | foobar2000のwsh panel modのサンプルコードその4 »
« foobar2000のwsh panel modのサンプルコード番外編-資料1 インターフェイス | | foobar2000のwsh panel modのサンプルコードその4 »
コメントは日本語でお願いします。(URLは入力禁止:Do not URL writing.) :System message: コメントを受けつけています。