Ув. форумчане, нужна помощь с панелями WSH SeekBar и WSH VolumeBar.
(мои познания в WSH Panel Mod ненамного превышают 1%.)
Задача такая:
в нормальном состоянии в в панелях отображается только полоса прокрутки (WSH SeekBar) и уровень громкости (WSH VolumeBar);
при наведении мышкой (на соответствующую панель) изменяется цвет полосы и отображаются цифровые значения (минуты... , горомкость в db);
если убрать мышь - цвет полосы плавно изменяется до первоначалбного а цифровые значения исчезают (уменьшаю значение Alpha).
Вопрос такой: с WSH VolumeBar вроде получается, а в WSH SeekBar не работает, хотя делаю аналогично, ну я так думаю.
срипт WSH VolumeBar
- Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r, g, b, a) { return ((a << 24) | (r << 16) | (g << 8) | (b)); }
var fader = 0;
var fading_step = 1;
var g_timer;
var g_timer_refresh = 10;
var g_drag = 0;
var asd;
var v;
var text,text_muted,text_width,left_right;
var font = gdi.Font("arial",10,0);
var line_height = 1
var on_mouse = false, on_mouse_chk = false;
var m = 0
function on_paint(gr) {
var www = Math.pow(10,((fb.Volume+100)/50));
var ww = window.Width;
var wh = window.Height;
var volume = fb.Volume;
if(fb.Volume != v) {
var pos = www*ww/100;
} else {
var pos = asd;
}
if(pos>ww) pos=ww;
if(pos) pos;
gr.FillSolidRect( 0 , 2 , pos , line_height , RGBA(0,0,0,150));
gr.FillSolidRect( 0 , 1 , pos , line_height , RGBA(100,113,149,150));
text_muted = volume == -100 ? " Muted" : "" ;
gr.DrawString( text_muted , font, RGB(0,0,0), 1 , line_height + 3 , text_width, wh, 0);
gr.DrawString( text_muted , font, RGB(100,115,143), 0 , line_height + 2 , text_width, wh, 0);
// if(on_mouse || g_drag) {
text = volume == -100 ? " Muted" + " " + fader : " " + Math.round(volume) + " db " + " " + fader ;
text_width = gr.CalcTextWidth(text, font);
left_right = pos < text_width ? 1 : 0;
if(left_right==1) {
gr.DrawString( text , font, RGBA(0,0,0,fader), 1 , line_height + 3 , text_width, wh, 0);
gr.DrawString( text , font, RGBA(0,129,215,fader), 0 , line_height + 2 , text_width, wh, 0);
} else {
gr.DrawString( text , font, RGBA(0,0,0,fader), pos-text_width + 1, line_height + 3 , text_width, wh, 0);
gr.DrawString( text , font, RGBA(0,129,215,fader), pos-text_width, line_height + 2 , text_width, wh, 0);
}
gr.FillSolidRect( 0 , 1 , pos , line_height , RGBA(0,129,215,fader));
// }
if(on_mouse){
if(fader>0) window.ClearInterval(g_timer);
fader = 255;
g_timer = window.SetInterval(function(){
fader = fader-fading_step;
if(fader<=0) {fader = 0; window.ClearInterval(g_timer)}
window.Repaint();
}, g_timer_refresh);
}
}
function on_mouse_lbtn_down(x,y) {
g_drag = 1;
}
function on_mouse_lbtn_up(x,y) {
on_mouse_move(x,y);
g_drag = 0;
}
function on_mouse_move(x,y) {
on_mouse = true;
window.SetCursor(32649);
if(g_drag) {
v = (x / window.Width)*100;
v = (v<0) ? 0 : (v<100) ? v : 100;
v = -100+(Math.floor((((Math.log(v+1)))/Math.LN10)*50));
asd = x;
if(fb.Volume!=v) fb.Volume = v;
}
if(on_mouse_chk!=on_mouse || g_drag) {
on_mouse_chk = on_mouse;
window.Repaint();
}
}
function on_mouse_leave() {
on_mouse = false;
on_mouse_chk = false;
window.SetCursor(32512);
window.Repaint();
}
function on_mouse_wheel(delta) {
if(delta>0)
fb.VolumeUp();
else
fb.VolumeDown();
}
function on_volume_change(val) {
window.Repaint();
}
WSH SeekBar
- Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r, g, b, a) { return ((a << 24) | (r << 16) | (g << 8) | (b)); }
var fader = 0;
var fading_step = 1;
var g_timer;
var g_timer_refresh = 10;
var g_drag = 0;
var g_drag_seek = 0;
var font = gdi.Font("Arial",10,0);
var text_1, text_2, text_width,text_1_width, text_2_width, left_right;
var line_height = 1
var on_mouse = false, on_mouse_chk = false;
function sec2time(sec) {
var h,m,s;
h = Math.floor(sec/3600);
m = Math.floor((sec-h*3600)/60);
s = sec - h*3600 - m*60;
if(m<10 && h!=0) m = "0" + m;
if(s<10) s = "0" + s;
return (h==0 ? "" : h+":") + m + ":" + s;
}
function on_paint(gr) {
var ww = window.Width;
var wh = window.Height;
var pos = 0;
var length = fb.PlaybackLength;
if(length > 0) {
if(g_drag){
pos = ww * g_drag_seek;
} else {
pos = ww * (fb.PlaybackTime / length);
}
}
gr.FillSolidRect( 0, 2, pos , line_height , RGBA(0,0,0,150));
gr.FillSolidRect( 0, 1, pos , line_height , RGBA(100,113,149,150));
// if(fb.IsPlaying) {
// if((on_mouse || g_drag) && fb.IsPlaying) {
text_1 = " " + sec2time(Math.floor((g_drag && length>0) ? length*g_drag_seek : fb.PlaybackTime + " ")) + " ";
text_2 = " / " + sec2time(Math.floor(fb.PlaybackLength)) + " " + on_mouse + fader;
text_1_width = gr.CalcTextWidth(text_1, font);
text_2_width = gr.CalcTextWidth(text_2, font);
text_width = text_1_width + text_2_width;
left_right = pos < text_width ? 1 : 0;
if(left_right==1) {
gr.GdiDrawText(text_1, font, RGBA(0,0,0,fader), 1 , line_height + 3 , text_1_width, wh, 0);
gr.GdiDrawText(text_1, font, RGBA(0,129,215,fader), 0 , line_height + 2 , text_1_width, wh, 0);
gr.GdiDrawText(text_2, font, RGBA(0,0,0,fader), text_1_width + 1 , line_height + 3 , text_2_width, wh, 0);
gr.GdiDrawText(text_2, font, RGBA(100,113,149,fader), text_1_width , line_height + 2 , text_2_width, wh, 0);
} else {
gr.GdiDrawText(text_1, font, RGBA(0,0,0,fader), pos-text_width + 1, line_height + 3 , text_1_width, wh, 0);
gr.GdiDrawText(text_1, font, RGBA(0,129,215,fader), pos-text_width , line_height + 2 , text_1_width, wh, 0);
gr.GdiDrawText(text_2, font, RGBA(0,0,0,fader), pos-text_width + text_1_width + 1 , line_height + 3 , text_2_width, wh, 0);
gr.GdiDrawText(text_2, font, RGBA(100,113,149,fader), pos - text_width + text_1_width , line_height + 2 , text_2_width, wh, 0);
}
gr.FillSolidRect( 0, 1, pos , line_height , RGBA(0,129,215,fader));
// }
if(on_mouse){
if(fader>0) window.ClearInterval(g_timer);
fader = 255;
g_timer = window.SetInterval(function(){
fader = fader-fading_step;
if(fader<=0) {fader = 0; window.ClearInterval(g_timer)}
window.Repaint();
}, g_timer_refresh);
}
}
function on_mouse_lbtn_down(x,y) {
g_drag = 1;
}
function on_mouse_lbtn_up(x,y) {
if(g_drag) {
g_drag = 0;
g_drag_seek = x / window.Width;
g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
fb.PlaybackTime = fb.PlaybackLength * g_drag_seek;
}
}
function on_mouse_move(x,y){
on_mouse = true;
if(fb.IsPlaying) window.SetCursor(32649);
if(g_drag){
g_drag_seek = x / window.Width;
g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
}
if(on_mouse_chk!=on_mouse || g_drag) {
on_mouse_chk = on_mouse;
window.Repaint();
}
}
function on_mouse_leave() {
on_mouse = false;
on_mouse_chk = false;
window.SetCursor(32512);
window.Repaint();
}
function on_playback_new_track(info) {
window.Repaint();
}
function on_playback_stop(reason) {
window.Repaint();
}
function on_playback_seek(time) {
window.Repaint();
}
function on_playback_time(time) {
window.Repaint();
}
function on_mouse_wheel(delta) {
fb.PlaybackTime = delta>0 ? fb.PlaybackTime + 1 : fb.PlaybackTime - 1;
window.Repaint();
}
Спасибо.