0 Members and 2 Guests are viewing this topic.
1. Данные считываются для Активного плейлиста. Т.е при прокрутке плелист-табов рулон и позиция будут синхронно перерисовываться. При окончании текущего плейлиста и автоматической его смене на другой (если так настроено), рулон останется привязан к отыгравшему плейлисту. Было бы правильнее, если бы PlaybackPosition и PlaybackDuration брались у Играющего плейлиста.
Нотификация так и остаётся?
Playlist.ContentInfo
Вот, попробуй эту сборку: https://disk.yandex.ru/d/ozY1iryF-aBZLQhttps://disk.yandex.ru/d/lWYXv-A02l09IQPlaybackPosition/Duration переименованы в PlaylistPosition/Duration и перенесены на уровень провайдера prvPlayerState.Если все ОК - завтра буду собирать обновление.
Вроде всё корректно, инфа играющего плейлиста, обновляется при смене.Единственное, на что обратил внимание, - переход на следующий плейлист происходит, когда показания Position на пару секунд меньше Duration.
Плейлисты переключаются, но если в этот момент курсор в плейлисте, то видимым остаётся прежний плейлист. Не знаю, правильно это или нет...
Ну, а как с этим?
Протестировал некоторые скины / обложки при разрешении 4К.
Можно ли как то извлечь текст всплывающей подсказки у обычной кнопки (по типу acVisualNext и т.п.) ...
У меня было сходное желание - выводить имя текущей визуализации. Видимо, надо просить Артёма добавить точку доступа/сервис в prvVisual .
В моём случае это нужно для того чтобы не писать (дублировать) лишние строки локализации на разных языках:
@Lng:AIMP\acVisualNext.h;
выводить имя текущей визуализации
Можно попробовать вот такую запись: Code: [Select]@Lng:AIMP\acVisualNext.h;
жаль только не отображается текст в редакторе
Как на счет реализации остальных кнопок, есть какой-то алгоритм?
Кстати говоря, текстуры с вертикальной раскладкой рисуются быстрее.
Размер скина вырос в полтора раза! Нагрузка же на проц не изменилась.
На сколько старый скин? от AIMP3/4? Напомню, что раньше у скинов было solid-сжатие, с AIMP5 - каждая текстура пакуется индивидуально и распаковывается только при надобности. Да, скины стали больше по размеру, но зато быстрее грузятся и меньше занимают в памяти (особенно актуально для скинов с поддержкой нескольких разрешений)
Дело не в возрасте исходного скина, сборка производилась в актуальной версии редактора, отличие лишь в ориентации многокадровых текстур. На производительность не влияет, но размер самого скина (и проекта тоже) для вертикально ориентированных текстур значительно больше.
procedure Execute(var State: Integer);var shu1,shu2:Integer;begin shu1 := FindObject('acPlayerShuffle').Get('StateIndex'); shu2 := FindObject('acPlayerRepeat').Get('StateIndex'); FindObject('shuf4').Set('Template', shu1); //for test FindObject('rep4').Set('Template', shu2); //for test begin if shu1 = 1 then FindObject('MC').Set('Position', 1); //update state to apply skin if shu2 = 1 then FindObject('MC').Set('Position', 2); //update state to apply skin end; end;
procedure Execute(var State: Integer);var shu1,shu2:Integer;begin shu1 := FindObject('acPlayerShuffle').Get('StateIndex'); shu2 := FindObject('acPlayerRepeat').Get('StateIndex'); case State of 0: begin if shu1<> 0 then FindObject('acPlayerShuffle').Execute; if shu2<> 0 then FindObject('acPlayerRepeat').Execute; end; 1: if shu1 = 0 then FindObject('acPlayerShuffle').Execute; 2: if shu2 = 0 then FindObject('acPlayerRepeat').Execute; end; end;
but when i use it along with any other skin, it's getting weird:... apply the test skin, the repeat mode still turned on and the button's texure also shown as 3-"repeat".(should shown as 2-"shuffle") apply the default skin again, the repeat mode turned on automatically.
case State of ... 2: if shu2 = 0 then FindObject('acPlayerRepeat').Execute;
the "MC" ScriptableOperatorCounter restores it's position from the default one (0) to it's last saved position (in your example - 2).
One possible solution is to use a ScriptableEventHandler instead, see the attached project
one more question, is it able to disable the playlist's ItemLine2 information? via adjusting the line2's font and offset, i made the line2 nearly invisiable but still could see some "dirty" things...
2nd line can be disabled via app setting
I have a button connected to the panel. When I click the button, the panel appears and a delayer starts at the same time. After 1000ms, the delayer will hide the panel.
I can offer another solution, in my opinion, simpler and more reliable.
... It's the first time I leanrt one animator can link itself and can have no "frame".
Текстура в аниматоре, всё-таки, есть, но она прозрачная и состоит всего из двух кадров 1х1 пикс.
Есть ли возможность перемещения элементов (контейнер, кнопки, панели, текст и т.д.) из одного контейнера в другой при помощи скрипта, чтобы не плодить копии элементов в разных контейнерах?
When I link the script with any of button event, I got an error, how to resolve this?
Judging by the message, the queue list does not exist at the moment.
by default the queue list is empty, that's why an error occurs
But even if there is something in the queue list, the user can start any track from the playlist and the information about the next track will no longer be correct, so the prvPlaybackQueue provider cannot be used for this purpose.
procedure Execute(EventData, Arguments: TComponent);
Is there any way to display the previous, current playing and nexttrack's coverart at the same time?
I afraid it impossible for now