AIMP Forum

AIMP for Windows => Предложения / Suggestions => Skin Editor, Skin Engine => Skin Engine => Topic started by: Kibermanick on November 07, 2021, 19:40:16

Title: Дежурный скрипт
Post by: Kibermanick on November 07, 2021, 19:40:16
Вообщем эта тема продолжение обсуждения из https://www.aimp.ru/forum/index.php?topic=27831.msg417835#msg417835

Суть моего предложения в том, что в данное время в AIMP отсутствует дежурный скрипт который мог бы отрабатывать данные по мере их поступления а не по вызову скрипта разово как слепок данных на момент вызова. Например как вариант решения предлагаю добавить такое событие которое отрабатывало бы эвент до тех пор пока сам вызвавший элемент активен, по аналогии с движением курсора, пока курсор двигаеться работает OnMouseMove но у него выявился косяк в виде заморозки скрипта когда курсор стоит, так вот например если взять тот же gauge когда он поднимает или опускает уровень считать это как то же движение курсора то есть непрерывный вызов эвента.

наглядно:

(https://www.aimp.ru/forum/index.php?action=dlattach;topic=67931.0;attach=64862)


(https://www.aimp.ru/forum/index.php?action=dlattach;topic=67931.0;attach=64868)



Пример использования:


(https://www.aimp.ru/forum/index.php?action=dlattach;topic=67931.0;attach=64864)


Так же данный метод можно было бы использовать для анимирования положения и размера любых элементов скина. Это так же позволит делать плавный запуск и плавную остановку аниматоров, например ленточных бабин.
Title: Re: Дежурный скрипт
Post by: Black_AVP on November 07, 2021, 20:12:22
Зачем приплетать суда Gauge - это опять те же наши костыли и не более.
Все события мыши нам доступны, других в природе нет и весь мир ими успешно обходится.
Кстати, "пример использования" что-то мало похож на предыдущую картинку, больше мне напомнило это (https://www.aimp.ru/forum/index.php?topic=61370.msg392109#msg392109), с той лишь разницей, что там показывается фрагмент картинки, а тут перемещается увеличенный кавер целиком.

Лучше предложение было бы обозвать "Реализовать возможность увеличения кавера при перемещении над ним курсора мыши" и не упоминать ни про скипты и гауге, чтоб это делалось на уровне плеера, где проще реализовать и скорость и плавность и инерционность перемещения.
Title: Re: Дежурный скрипт
Post by: Kibermanick on November 08, 2021, 08:05:19
Зачем приплетать суда Gauge - это опять те же наши костыли и не более.
Все события мыши нам доступны, других в природе нет и весь мир ими успешно обходится.
Кстати, "пример использования" что-то мало похож на предыдущую картинку, больше мне напомнило это (https://www.aimp.ru/forum/index.php?topic=61370.msg392109#msg392109), с той лишь разницей, что там показывается фрагмент картинки, а тут перемещается увеличенный кавер целиком.

Лучше предложение было бы обозвать "Реализовать возможность увеличения кавера при перемещении над ним курсора мыши" и не упоминать ни про скипты и гауге, чтоб это делалось на уровне плеера, где проще реализовать и скорость и плавность и инерционность перемещения.

В моем примере с кавером он увеличивается плавно а не мгновенно, да и дело не в кавере, я же написал что это позволило бы плавно менять почти любые параметры элементов будто размеры прозрачность положение и менять их не только по событиям миши а по счетчику если реализовать вызов эвента пока гауге меняет свой позишн. Это же не большой костыль но при этом он не дает особо большей нагрузки, в отличии от таймеров как я заметил, а еще у таймера нет возможности задавать скорости возрастания и убывания значения. А события миши хоть и доступны но событие move как я уже сто раз сказал стопориться если курсор стоит. Вы наверно рофлите если после столького обсуждения так и не поняли о чем я. И ко всему этому данные с гауге можно логарифмировать или пропустить через другие функции что бы добавить нелинейности.
Title: Re: Дежурный скрипт
Post by: Kibermanick on November 08, 2021, 08:06:58
А и забыл сказать что без работы эвента по событию вызванному изменением позиции гауге невозможно реализовать возврат элементов на исходную так же плавно.
Title: Re: Дежурный скрипт
Post by: Kibermanick on November 08, 2021, 08:09:44
Гауге я привел как пример. Надо сделать событие которое вызывает эвент активностью любого елемента. Например можно сделать что событие работает пока вы тяните за ползунок или пока аниматор отрабатывает свои кадры. Если элемент активничает то работает скрипт события.
Title: Re: Дежурный скрипт
Post by: Artem on November 08, 2021, 09:11:02
А задача то в чем? Зумить обложку альбома? Ну это я могу сделать и без всех этих наворотов на стороне CoverArtDisplay.
Title: Re: Дежурный скрипт
Post by: Kibermanick on November 08, 2021, 09:52:08
А задача то в чем? Зумить обложку альбома? Ну это я могу сделать и без всех этих наворотов на стороне CoverArtDisplay.

Да что вы все к обложке альбома цепляетесь, это просто пример работы анимации. Я навожу курсор на панель с кавером скрипт события посылает данные на кавер с новыми размерами и положением но делает это через умножение на позицию гауге которая в свою очередь плавно поднимаеться от 0 до 100 то бишь эти данные приходят не 1 в 1 а доходят полностью по мере возростания данных гауге а сама скорость данных гауге и задает скорость плавного изменения данных позиции и размера кавера, а потом когда гауге заряжен на 100 передача идет напрямую, то бишь плавное инертное начало но потом никакой инерции когда гауге уже 100, но суть то не в кавере вместо него может быть любой елемент.

Кароче, добавте возможность таким елементам как гауге с плавающими значениями иметь возможность вызывать ScriptableEventHandler изменением этих самых значений как по анологии с кусрсором мыши который вызывает событие когда меняет свои значения X и Y, только вместо X и Y у этемента свойсто 'position'.

Нормально объяснил?
Title: Re: Дежурный скрипт
Post by: Black_AVP on November 08, 2021, 09:55:49
... Например можно сделать что событие работает пока вы тяните за ползунок или пока аниматор отрабатывает свои кадры. Если элемент активничает то работает скрипт события.
Для слайдеров, согласен, не хватает нам события onChange.
У аниматора событий достаточно, активность его можно отследить и по номеру кадра и по другим параметрам.
Других событий, кроме тех, что есть в языках программирования и тут быть не может.

... это позволило бы плавно менять почти любые параметры элементов будто размеры прозрачность положение и менять их не только по событиям миши а по счетчику если реализовать вызов эвента пока гауге меняет свой позишн.
И каждый раз накручивать кучу скриптов, да ещё привязывать их к Gauge? Ну, это, мягко говоря, смешно.

А события миши хоть и доступны но событие move как я уже сто раз сказал стопориться если курсор стоит.
На то оно и Move, чтоб срабатывать при перемещении мыши, иначе в нём бы и смысла не было. В таких случаях надо просто уметь вызвать другие процедуры.

И ко всему этому данные с гауге можно логарифмировать или пропустить через другие функции что бы добавить нелинейности.
Логарифмировать можно что угодно, в том числе и состояние счётчика, только логарифм - функция медленная (хотя для наших скриптов это не заметно в общем тормозном процессе), проще программно менять шаг перемещения.

Вы наверно рофлите если после столького обсуждения так и не поняли о чем я.
Ну, этого краденого у америкосов жаргона, я действительно не понимаю, но меня это не напрягает, я всегда ратовал за чистоту великого русского языка.
И да, мне мне кажется сомнительной вся эта затея с дёрганьем кавера. Пользователь, что, как ребёнок будет играться с ним мышкой?
Title: Re: Дежурный скрипт
Post by: Kibermanick on November 08, 2021, 10:09:05
И каждый раз накручивать кучу скриптов, да ещё привязывать их к Gauge? Ну, это, мягко говоря, смешно.

Ну вот конкретно у меня с этим справляется по сути одна строчка, просто ей не дают нормально работать остановка событий. Да и что такого, гауге весьма удобная штука для использования не по прямому назначению, она нативна а значит не тормозит все дополнительно.

На то оно и Move, чтоб срабатывать при перемещении мыши, иначе в нём бы и смысла не было. В таких случаях надо просто уметь вызвать другие процедуры.

Да, но курсор то не исчезает он остается над вызвавшем элементом. Я конечно понимаю что нет движения нет отработки. В таком случае не хватает события которое работало бы непрерывно когда курсор над объектом даже когда стоит на месте. Enter и Leave  тоже работает как мгновенный слепок данных по счетчику и неинтерактивны.
Логарифмировать можно что угодно, в том числе и состояние счётчика, только логарифм - функция медленная (хотя для наших скриптов это не заметно в общем тормозном процессе), проще программно менять шаг перемещения.

Ну тут не спорю.

Ну, этого краденого у америкосов жаргона, я действительно не понимаю, но меня это не напрягает, я всегда ратовал за чистоту великого русского языка.
И да, мне мне кажется сомнительной вся эта затея с дёрганьем кавера. Пользователь, что, как ребёнок будет играться с ним мышкой?

Это дает живость интерфейсу, интерактивность опять же, и да любители позалипать оценят.
Title: Re: Дежурный скрипт
Post by: Kibermanick on November 08, 2021, 10:31:37
На мой взгляд реализовать такое проще простого, надо просто обмануть ScriptableEventHandler что бы он считал изменение уровня гауге или других элементов со значением позиции как за перемещение мыши. И все.
Title: Re: Дежурный скрипт
Post by: Black_AVP on November 08, 2021, 11:02:29
Опять Gauge .... Да, пойми ты наконец, что Gauge - это делфийский компонент (возможно, у Артёма - свой), и все нарастания и спады его сделаны на програиммном уровне с использованием тех же таймеров. Зачем городить такой смешной огород??? Ну детство какое-то, ей Богу!
Ещё раз повторю: других событий мыши нет и быть не может, надо просто использовать эти события для запуска своих скриптов. В том моём примере так и сделано: событие onMouseEnter разрешает работу таймера, а событие onMouseLeave его запрещает. Таймер вызывает срабатывание скрипта, в котором уже можно делать всё, что тебе угодно, пока мышь в панели (движется или не движется - без разницы). Если надо отрабатывать ещё и выход из панели, понадобится ещё один скрипт.
Title: Re: Дежурный скрипт
Post by: Artem on November 08, 2021, 11:40:26
Кароче, добавте возможность таким елементам как гауге с плавающими значениями иметь возможность вызывать ScriptableEventHandler изменением этих самых значений как по анологии с кусрсором мыши который вызывает событие когда меняет свои значения X и Y, только вместо X и Y у этемента свойсто 'position'.

Нормально объяснил?

Нет. Вы не объясняете задачу, вы говорите про то, что вам не хватает, чтобы ваш костыль заработал.

Пока я понял, что речь идет про хитрую анимацию для UI, но не до конца понимаю про какую - что в общем случае она должна делать?
С обложкой альбома понятно - там простой зум, но зум можно реализовать и иначе. Как быть с другими сценариями? Они есть?
Title: Re: Дежурный скрипт
Post by: Artem on November 08, 2021, 11:40:53
возможно, у Артёма - свой

Да, все свои, ибо стандартные - так себе.