Ооо! У моего отца была такая только чёрная (http://www.carsclub.ru/forum/uploads/monthly_03_2013/post-7257-0-45423500-1364448296.jpg), но ваш аппарат по симпатичнее будет.Вообще-то вариантов оформления этой модели немало, особенно с учётом модификаций 302-1, 302-2. Но в качестве прототипа я взял самую классическую.
+1 за работу.
Крайние положения ручек тембра и громкости другие были. Минимум был справа-вверху, Максимум был слева-вверху. Там двойная линия идет над клавишами и вправо, вот те риски которые в нее упираются, они и крайние. Громкость почему-то выкручивается до 99% а не до 100%. Визуализацию пленки в кассете считаю лучше сделать по всему плейлисту, а не по одной песне. Анимацию кнопки предлагаю сделать без удерживания в нажатом положении, она открывала крышку кассеты и вставала обратно. При проигрывании была нажата только кнопка Пуск и все.Уточнение по поводу положений регуляторов очень ценное, ПОФИКСИЛ.
Конечно, и так вид прекрасный! Но чем ближе к оригиналу, тем лучше!
Уточнение по поводу положений регуляторов очень ценное, ПОФИКСИЛ.
На счёт 99% громкости, - такое имеет место быть, если регулировать громкость протаскиванием ЛКМ. А вот при регулировании СКРОЛЛОМ громкость докручивается до 100%. И я абсолютно уверен, что регулирование скроллом на порядок удобнее!
Клавиша выброса кассеты в скине выполняет функцию вызова плейлиста, его же состояние и индицирует, аналогично реализовано во многих моих скинах, менять логику поведения считаю нецелесообразным.
Скин плеера, - это не симулятор конкретного магнитофона, это оболочка плеера, и приходится как-то выкручиваться, компенсирую отсутствующие, но необходимые элементы управления. По этой причине часть органов управления выполнены в виде "стелс-кнопок", а что-то привязано не совсем адекватным прототипам. Поскольку у магнитофона отсутствует клавиша ПАУЗА, на момент создания скина я не придумал ничего лучше, чем навесить её на клавишу СТОП. По этой причине она и остаётся нажатой, индицируя состояние ПАУЗА. Повторным нажатием воспроизведение будет остановлено. Аналогично сделано и у Легенды. Впрочем, позже, столкнувшись с аналогичной проблемой - отсутствием клавиши ПАУЗА у магнитофона NordMende, я поступил по другому, навесив паузу на клавишу ПЛЕЙ. Какой из вариантов лучше?.. Кстати, обращайте внимание на хинты, они подскажут, чего ожидать от того или иного органа...
Скин плеера, - это не симулятор конкретного магнитофона, это оболочка плеера, и приходится как-то выкручиваться, компенсирую отсутствующие, но необходимые элементы управления. По этой причине часть органов управления выполнены в виде "стелс-кнопок", а что-то привязано не совсем адекватным прототипам. Поскольку у магнитофона отсутствует клавиша ПАУЗА, на момент создания скина я не придумал ничего лучше, чем навесить её на клавишу СТОП. По этой причине она и остаётся нажатой, индицируя состояние ПАУЗА. Повторным нажатием воспроизведение будет остановлено. Аналогично сделано и у Легенды. Впрочем, позже, столкнувшись с аналогичной проблемой - отсутствием клавиши ПАУЗА у магнитофона NordMende, я поступил по другому, навесив паузу на клавишу ПЛЕЙ. Какой из вариантов лучше?.. Кстати, обращайте внимание на хинты, они подскажут, чего ожидать от того или иного органа...Состояние "Пауза" можно индицировать тем, что ни одна клавиша не нажата, но пленка на бобинках кассеты остается на месте. В этом состоянии нажатие "Останов" сбрасывает текущую песню на начало.
Бас, - это не инверсия регулятора ВЧ, а реализовывать полноценный регулятор ВЧ, заменяя родной эквалайзер, здесь нелепо.
Состояние "Пауза" можно индицировать тем, что ни одна клавиша не нажата, но пленка на бобинках кассеты остается на месте. В этом состоянии нажатие "Останов" сбрасывает текущую песню на начало.Настаиваете на нефиксируемом положении вспомогательных клавиш?.. Ну что ж, могу реализовать. Но "выворачивать наизнанку" регулятор тембра - увольте, но я чего-нибудь придумаю... ;)
Клавиша Пуск начинает воспроизведение, при этом она становится нажатой. Повторное нажатие не делает ничего.
Клавиша Останов останавливает воспроизведение, при этом все клавиши становятся не нажаты, позиция песни не меняется. Повторное нажатие сбрасывает позицию песни, это отображается изменением положения пленки на бобинках.
Реализовывать регулятор ВЧ, тем более подменять им эквалайзер, не надо конечно, но было бы правильно поменять местами 0% и 100% на ручке тембра, наименьше басов было при положении ручки влево-вверх. И ручка тембра всегда была в этом положении при воспроизведении, иногда ВЧ не хватало и в этом положении, каким-то значимым запасом по ВЧ аудио программы в СССР не баловали, а при перезаписи они еще и нередко снижались.
Обновил. Клавиши, которые не должны фиксироваться, - не фиксируются. Регулятор тембра теперь "многостаночник", - вся его подноготная в меню на надписи ТЕМБР...
Обновил. Клавиши, которые не должны фиксироваться, - не фиксируются. Регулятор тембра теперь "многостаночник", - вся его подноготная в меню на надписи ТЕМБР...
Судя по ответу, вам действительно нужен именно симулятор. Но 100% имитации невозможно достичь, а жертвовать для этого функционалом плеера неразумно. Можно, конечно, реализовать лишь регулятор ВЧ, но я этого делать не буду. А идея инверсного баса вместо регулятора ВЧ неправомерна, поскольку БАС в АИМП-е, - это "из другой оперы".
На 4К скин не грузится:А что значит: не грузится на 4К? Я специально скачал с сайта (на всякий пожарный), - всё грузится и в 32-х, и в 64-х битных версиях. Правда, у меня 5.40 beta стоит... Сейчас попробую в 5.30...
Can't load skin "Electronica-302.acs5": ChangetcBobScript: Error at 5:3 - Access violation at address 0000000000528CD6 in module 'AIMP.exe'. Read of address 0000000000000034
Подробности во вложении.
На 4К скин не грузится:
Can't load skin "Electronica-302.acs5": ChangetcBobScript: Error at 5:3 - Access violation at address 0000000000528CD6 in module 'AIMP.exe'. Read of address 0000000000000034
Подробности во вложении.
У тебя какая версия плеера? Сборка из альфа-канала сейчас поломана.Стояла 2622, обновил до 2624, теперь загружается. Но с остальными скинами никаких проблем и на 2622 не было.
Стояла 2622, обновил до 2624, теперь загружается. Но с остальными скинами никаких проблем и на 2622 не было.
На 2622 должно было быть норм.Ради интереса вернул 2622(х64) - результат прежний, ругается на какой-то скрипт.
Ради интереса вернул 2622(х64) - результат прежний, ругается на какой-то скрипт.
2628 - норм.
Владимир, у меня к тебе предложение: раз уж столько понапихано в скин этого детища соврадиопрома, сделать выбор моделей и кассет по примеру этого скина (https://www.aimp.ru/forum/index.php?topic=69959.0). Это и наглядно и более цивилизованно. Можно все миниатюры собрать в одну картинку и по клику мыши переключать. Будет ещё одно окно - нормальный диалог настроек скина.Посмотрел скин. Да уж, - набор LEGO по конструированию кассет. Я у себя старался, чтобы внешний вид кассет соответствовал реальным образцам, здесь же - воля вольная. Выбор же по картинке, согласен, - наглядно и удобно. Для смены интерфейса самое то. Подумаю...
Выбор кассет вращением колеса мыши да ещё в неком потаённом месте - тоже не лучшее решение, слишком быстро всё мельтешит и сбивают с толку клики по слайдеру.Потаённое место - крышка кассетоприёмника, за исключением окна (там ещё в окне кассеты прогрессбар имеется).
Кнопку выброса кассеты не надо было делать с фиксацией чтоб показать плейлист, нелогично получается - идёт воспроизведение, а та кнопка нажата. И плейлист всё же лучше делать видимым при первом применении скина. Кстати, поменял бы уж его, а то даже перетащить его не за что.По поводу фиксации этой, да и кнопки Стоп мне уже писали, пожалуй, переделаю.
Ещё: при выборе кассет сразу два одинаковых хинта присутствуют.Один хинт ниже курсора появляется при наведении на слайдер, второй - выше слайдера при клике. Вот не помню, было ли подобное поведение раньше (надо будет проверить на предыдущих версиях АИМП), но сейчас так не только на смене кассет, а на любом слайдере. :-\
Выбор же по картинке, согласен, - наглядно и удобно. Для смены интерфейса самое то. Подумаю...Ну, так, и кассет тоже.
... там ещё в окне кассеты прогрессбар имеется.Кстати, да, его поведение тоже с толку сбивает: кликаешь в одну сторону, а лента прыгает в другую. Сделать уж тогда, чтоб рулон устанавливался в точку клика или уж совсем убрать его.
А клик... Может его отключить, оставить только скролл?..Полагаю это невозможно, родные события мыши нам никак не перекрыть.
Когда я впервые запускаю какой-нибудь скин, а поверх него по центру висит плейлист, мне первым делом хочется его закрыть, дабы не мешал лицезреть сам девайс.Ну, не стоит забывать о тех пользователях, для которых открыть какое-то дочернее окно становиться неразрешимой задачей, кто-то и про контекстное меню в главном окне даже не знает, а найти кнопку управления тем же плейлистом в наших скинах бывает непросто.
Я таскаю плейлист за обложку трека ...Естественное место для перетаскивания окна - его заголовок.
Владимир, у меня к тебе предложение: раз уж столько понапихано в скин этого детища соврадиопрома, сделать выбор моделей и кассет по примеру этого скина (https://www.aimp.ru/forum/index.php?topic=69959.0). Это и наглядно и более цивилизованно. Можно все миниатюры собрать в одну картинку и по клику мыши переключать. Будет ещё одно окно - нормальный диалог настроек скина.Реализовал твоё предложение по визуализации настройки интерфейса. Помимо Выбора моделей с заводским набором органов управления, решил не только смену кассет визуализировать, но и позволить юзерам поизвращаться в выборе клавиш, ручек и индикаторов, - этакий Конструктор.
Выбор кассет вращением колеса мыши да ещё в неком потаённом месте - тоже не лучшее решение, слишком быстро всё мельтешит и сбивают с толку клики по слайдеру.
Кнопку выброса кассеты не надо было делать с фиксацией чтоб показать плейлист, нелогично получается - идёт воспроизведение, а та кнопка нажата. И плейлист всё же лучше делать видимым при первом применении скина. Кстати, поменял бы уж его, а то даже перетащить его не за что.
procedure Execute(Sender, Arguments: TComponent);
const
ImgW = 92; // размеры
ImgH = 64; // миниатюры
begin
with Arguments do
if Get('Button') = 'mbLeft' then
FindObject('Model_Counter').Set('Position', Get('Y') div ImgH * 6 + Get('X') div ImgW) // это тот счётчик, которых заведует переобуванием
end;
Наглядно получилось, удобно. Но вот, опять же... Я долго не мог понять, как выбрать кассету. Оказалось, что заголовок окна кликабельный, чего в окнах не бывает. Уж надо было сделать две отдельных кнопки, чтоб заморочек таких не было, или уж всё в одном окне: и модели и кассеты.Пожалуй сделаю кнопки для смены окон, в одно окно пихать всё не хочется.
Так у тебя каждая миниатюра это отдельных компонент? :o Не жалко ресурсов? И какой же это гемор всё располагать в окне, да ещё куча биндинга!Картинка у меня одна общая, кнопки, правда, над каждой моделью отдельные, хотя и без текстуры. Кнопки меняют состояние счётчика, он связан со скриптом, который переключает текстуры в репозитории... Геморрно, согласен. :o
Я ж предлагал простейший способ - все миниатюры собрать в одну картинку...
...и выбирать по координатам мыши. Скрипт всего в одну строчку:Code: [Select]procedure Execute(Sender, Arguments: TComponent);
const
ImgW = 92; // размеры
ImgH = 64; // миниатюры
begin
with Arguments do
if Get('Button') = 'mbLeft' then
FindObject('Model_Counter').Set('Position', Get('Y') div ImgH * 6 + Get('X') div ImgW) // это тот счётчик, которых заведует переобуванием
end;
Пример в аттаче. Может, не точно вырез картинку со скрина, но это на результат практически не влияет.
За титанический труд +1.
А как быть с КОНСТРУКТОР'ом? Для клавиш, ручек, индикаторов и кассет - каждому свою панель?От конструктора я бы отказался. Зачем глумиться над аппаратом? Люди худо-бедно работали над дизайном, и мешать всё в кучу, несовместимые вещи, не стОит.
От конструктора я бы отказался. Зачем глумиться над аппаратом? Люди худо-бедно работали над дизайном, и мешать всё в кучу, несовместимые вещи, не стОит.Я двумя руками за сохранение исходного дизайна, вот только в случае с модами Электроники в разработанный дизайн, похоже, вмешалась промышленность, льющая компоненты из того, что было под рукой. Сборщикам приходилось довольствоваться имеющимся ассортиментом (для голубой Электроники 302-3 даже шильдика родного не нашлось, поставили от просто 302-й). По этой же причине у линейки 302-3 и ручки, и клавиши коричневые, независимо от цвета панели. Сие не может не вызывать желания исправить диссонанс.
Если выбор кассет будет на второй странице, то, ес-но, будет нужна ещё панель, но скрипт будет такой же, только вписать новые размеры (точнее, шаг) миниатюр.С этим-то как раз всё понятно, однако есть нюанс. Подозреваю, что данный скрипт отталкивается от фиксированных размеров, а эта Электроника у меня масштабируется, но мне не удалось заставить панель в твоём примере масштабироваться...
P.S.
Да, ещё множитель может измениться (та 6-ка) - по числу элементов в ряду. Надо было вынести в константы, чтоб понятнее было.
... но мне не удалось заставить панель в твоём примере масштабироваться...Панель привязана к окну по всем четырём сторонам. Масштабироваться должно окно. Включи у него Scaled = true. При масштабировании плеером координаты курсора пересчитываются и скрипт будет работать правильно, как будет при смене картинки - не знаю, надо пробовать. Зачем его вообще масштабировать?
Получается, ты заблокировал масштабирование этого окна. Зачем?Считаю, что, если скин позиционируется как 4К, то он и должен использоваться на 4К мониторе, там масштабировать выше уже некуда. А нашпиговывать его текстурами для других масштабов, да ещё с вариациями, - это превращать его в монстра. Ну, ладно простые скины в виде плейлиста - там и текстуры мелкие и их не много, но в наших-то скинах ...
Я ж предлагал простейший способ - все миниатюры собрать в одну картинку и выбирать по координатам мыши. Скрипт всего в одну строчку:Реализовал, всё переключается, особенно нравится, что переключение по ДаунТапу, НО!
После закрытия плеера и повторного включения все текстуры возвращаются к дефолтным. С этим можно что-то сделать?Сохранять в ини-файле. В onLoaded восстанавливать в то состояние, что было при закрытии плеера.
Сохранять в ини-файле. В onLoaded восстанавливать в то состояние, что было при закрытии плеера.В OnLoaded у меня уже немало напихано...
Вернул скрипты, а из хэндлеров лишь меняю состояние счётчиков, связанных со скриптами.Ну, всё верно, если номер одёжки записывать в скрипт. счётчик, который будет менять текстуры, то тогда ини-файл не понадобится, поскольку все счётчики при загрузке скина срабатывают.
А про Ini-файл можно подробнее? Я с этим ещё не сталкивался.На том же примере попробую сделать.
А про Ini-файл можно подробнее? Я с этим ещё не сталкивался.Добавил в тот же пример запись и чтение из конфига, чисто для демонстрации, потому как, если номер одёжки будет храниться в счётчике, всё это смысла не имеет.
Добавил в тот же пример запись и чтение из конфига, чисто для демонстрации, потому как, если номер одёжки будет храниться в счётчике, всё это смысла не имеет.Посмотрел, и в справку заглянул. Не скажу, что всё понял, но ход мыслей уловил, может когда и пригодится ;D
Почитай справку, конечно, ещё, в инишнике можно хранить много чего: и строки и числа, глобальные переменные.
Ну а пока v2.20 (https://disk.yandex.ru/d/FMrW0aFf5HSlpw)По ссылке пусто...
По ссылке пусто...На Яндекс.Диске какие-то проблемы, ссылка при обновлении файла не сохраняется :(
На Яндекс.Диске какие-то проблемы, ссылка при обновлении файла не сохраняется :(Бывает у них...
Бывает у них...Убрал
Владимир, убери, пожалуйста, цитату из этого сообщения (https://www.aimp.ru/forum/index.php?topic=71005.msg434932#msg434932) - там ссылки тоже могут быть некорректными.
А почему так вырос размер файла скина?В новой версии скин включает ТРИДЦАТЬ модификаций, к тому же каждая текстура в ТРЁХ МАСШТАБАХ!