PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   iCarDS (http://pccar.ru/forumdisplay.php?f=121)
-   -   iCarDS+Foobar2000 (http://pccar.ru/showthread.php?t=14176)

kgena_ua 18.08.2015 22:36

Цитата:

Сообщение от duzzy (Сообщение 335604)
kgena_ua
а нельзя ли сделать анимацию перехода панелей просто по таймеру без функции on_paint?

duzzy. а вот пробую:
Код:

function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }

var font = gdi.Font("Arial",12,1);
var ww = window.Width, wh = window.Height;;

DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;

var panel = window.GetProperty("panel",0);
var c_panel = panel, n_panel;
var panels = 2;
var old_panel = panel;
var dir_move, move = false;

var y = 50;
var c_x = 0;
var n_x = 0;
var c_ww = 0;
var n_ww = 0;
var timer;

var step_c = window.GetProperty("step_c", 10);
var step_n = window.GetProperty("step_n", 8);

pss.GetPanel(0).Show(true);  /// тут фигня какая-то, почему не отображается
pss.GetPanel(0).Move(c_x, y, window.Width, window.Height - y, true);

function on_paint(gr) {
        gr.FillSolidRect(0, 0, ww, wh, RGB(60,68,79));
       
        gr.GdiDrawText("1", font, RGB(250,250,250), 0, 0, ww / 3, y, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS );
        gr.GdiDrawText("2", font, RGB(250,250,250), ww / 3, 0, ww / 3, y, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS );       
        gr.GdiDrawText("3", font, RGB(250,250,250), ww / 3 * 2, 0, ww / 3, y, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS );       

        dim();

//        pss.GetPanel(c_panel).Show(true);
//        pss.GetPanel(c_panel).Move(c_x, y, window.Width, window.Height - y, true);
       
//        if (dir_move == "right" ? n_x < 0 : n_x > 0) {
//                pss.GetPanel(n_panel).Show(true);
//                pss.GetPanel(n_panel).Move(n_x, y, n_ww, wh - y, true);
//        }

gr.GdiDrawText(panel, font, RGB(250,250,250), 0, 0, ww/2, y, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS );       
}

function on_size(){
    ww = window.Width; 
    wh = window.Height;
}

function on_mouse_lbtn_down(x, y) {
        if (!move && on_mouse) {
                if (x >= 0 && x < ww / 3) {panel = 0};
                if (x >= ww / 3 && x <= ww / 3 * 2) {panel = 1};
        //        if (x >= ww / 3 * 2 && x <= ww) {panel = panel == 2 ? 3 : 2};
               
                if (x >= ww / 3 * 2 && x <= ww) {panel = panel == 3 ? 0 : panel + 1};

                dir_move = panel > old_panel ? "left" : "right";

                if (old_panel != panel) {
                        move_panel();
                        old_panel = panel
                }
        }
}

function on_mouse_wheel(delta) {
    if (pos_x >= ww / 3 * 2 && pos_x <= ww && on_mouse && !move) {       
                panel = panel == 3 ? 0 : panel + 1;
       
                dir_move = panel > old_panel ? "left" : "right";

                if (old_panel != panel) {
                        move_panel();
                        old_panel = panel
                }
    }
}

function move_panel() {
        n_panel = panel;

        dim();

        if (dir_move == "right" ? n_x = 0 - n_ww : n_x = c_ww);
       
        move = true;
        timer = window.CreateTimerInterval(10);
}

function on_timer(id) {
                if (dir_move == "left") {
                        c_x = c_x - step_c;
                        n_x = n_x - step_n;
                }
                if (dir_move == "right") {
                        c_x = c_x + step_c;
                        n_x = n_x + step_n;
                }
               
                pss.GetPanel(c_panel).Show(true);
                pss.GetPanel(c_panel).Move(c_x, y, window.Width, window.Height - y, true);
       
                if (dir_move == "right" ? n_x < 0 : n_x > 0) {
                        pss.GetPanel(n_panel).Show(true);
                        pss.GetPanel(n_panel).Move(n_x, y, n_ww, wh - y, true);
                }
               
                if (dir_move == "right" ? n_x >= 0 : n_x <= 0) {
//                        pss.GetPanel(c_panel).Show(false);
//                        window.SetProperty(c_panel,0);
//                        window.SetProperty(n_panel,1);
                        c_panel = n_panel;
                        n_panel = null;
                        c_x = 0;
                        n_x = 0;
                        timer.Dispose();
                        move = false;
        }
        window.SetProperty("panel",panel);
        window.Repaint();
}

function dim() {
        n_ww = ww;
        c_ww = ww;
}

var pos_x;
var on_mouse = false;

function on_mouse_move(x, y) {
    on_mouse = true;
    window.SetCursor(32649);
    window.Repaint();
    pos_x = x;
}

function on_mouse_leave() {       
    on_mouse = false;
    window.SetCursor(32512);
    window.Repaint();
}


Krysanov 18.08.2015 23:11

Цитата:

Сообщение от kgena_ua (Сообщение 335808)
Krysanov, на этот вопрос вряд ли кто-то сразу сможет ответить. Для начала нужно смотреть, что прописано в строке 3446 скрипта.
Для начала, смущает строка, где прописан путь к *.js
В начале скрипта должны быть строки // ==PREPROCESSOR== .... и т.д., где прописаны пути к *.js файлам. Там скорей всего написано Foobar2000\marc2003\....., вряд ли в Вашей сборке есть папка Foobar2000\marc2003\....., проверьте пути к файлам *.js

Ок, странно, это сборка 11.4 заметил на домашнем ноуте.. Никуда не лазил ... Может антивирусник что то удалил?

duzzy 19.08.2015 00:53

Krysanov
Это проблема с ЛастФМ, они очередной раз поменяли у себя что то на серваках, теперь скрипт NowPlay от марка2003 не работает его править нужно, сходи по ссылке я уже давал ее ранее
http://www.hydrogenaud.io/forums/ind...=77883&st=4225
там ребята на последних страницах как раз пробуют решить эту проблему.

duzzy 19.08.2015 01:00

kgena_ua
Спасибо!;) сейчас попробую...
Видел новый плейлист Бретта?
ссылка на его новое творение, еще не готов но то что видно на видео впечатляет...:)
http://fav.me/d95rh99
...................
Попробовал в твоей сборке, сейчас в своей буду пробовать, и на первый взгляд работает очень даже не плохо:).
Единственное что как мне кажется из on_timer нужно убрать window.repaint (строка 128) это будет только создавать лишнюю нагрузку на проц перерисовывая МПС во время движения панелей.
Утечки меньше на много но все равно есть, не понимаю откуда они лезут(возможно при математических вычислениях при движении панелей... пока не раскрыл этот секрет;))... но и правда в норму восстанавливаются при бездействии(т.е. если не использовать анимацию перехода в течении 1-2 секунд) быстро.
....................
Ну похоже что то более менее внятное у меня получилось:) правда рабочий набор памяти в пике 300 мб.
выглядит пока так... (артефакты и продергивания из за записи видео)
https://www.dropbox.com/s/7mf749dtzy..._test.mp4?dl=0
......................
Проблему с утечкой памяти решил этим CollectGarbage(); поставил после сброса таймера движения.

seriousstas 19.08.2015 01:03

Цитата:

Сообщение от Krysanov (Сообщение 335805)
а что тут надо подправить?

Вложение 40795

Зажми "Shift" + ПКМ => зайди в Properties =>
Clear=>Apply
Ошибка должна уйти.
Перенастрой отображение панели(левый верхний угол).

И да , остаётся ждать обновления скрипта ...

seriousstas 19.08.2015 01:09

kgena_ua
Цитата:

if (x >= ww / 3 * 2 && x <= ww) {panel = panel == 3 ? 0 : panel + 1};
по кнопке 3 будут гоняться все четыре панели, или хоть двадцать.
Ок, понял !

Krysanov 19.08.2015 05:47

Всем спасибо! Попробую!

wladkom1953 19.08.2015 14:38

Цитата:

Сообщение от seriousstas (Сообщение 335833)
Зажми "Shift" + ПКМ => зайди в Properties =>
Clear=>Apply
Ошибка должна уйти.
Перенастрой отображение панели(левый верхний угол).

И да , остаётся ждать обновления скрипта ...

Этот способ лечения не помогает.Обновления файла common8.js не будет. Как я понял marc2003 не собирается поддерживать старые скрипты. На сегодняшний день актуальна пятая версия: https://github.com/19379/wsh_marc2003/releases

kgena_ua 19.08.2015 16:29

Цитата:

duzzy
Видел новый плейлист Бретта?
duzzy, да интересно, только я предпочитаю elplaylist, там большие возможности по настройке, тем более что я изучил его процентов на 80-90 :smile2:, и главным для меня была возможность изменения размера обложки (например колесом выше) в плейлисте - в elplaylist у меня это вышло более или менее удачно.
И главное. duzzy, можно подробнее про CollectGarbage(), что это за зверь, и как и куда его нужно вставить.

seriousstas 19.08.2015 17:35

wladkom1953
Цитата:

Этот способ лечения не помогает
Речь об ошибке Krysanov на скрине #1839 . Перезагрузка (сброс настроек) скрипта убирает галку
чтения биографии с lastfm.ru и скрипт перестаёт крашиться - что даёт возможность нормально пользоваться плеером .
Цитата:

На сегодняшний день актуальна пятая версия
Да , но внутри нет скрипта "с картинками" , только Bio :)


Часовой пояс GMT +4, время: 20:02.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot