0 Members and 2 Guests are viewing this topic.
... "аниматор" бобины един, сменяются лишь текстуры.
Так это ес-но, я не понял в чём проблема, зачем нужно считывать скриптом State?
Что перемотка продолжается, позиция в треке стоит близко к 0 (может, колышется), а у нас бобины при этом вертятся, поскольку State = 1.Пробовал вырубить State через acPlayerSeekBackward.Checked, но, похоже, это свойство не публично или read only.updА, ведь, точно время в этот момент "колышется", где-то в пределах до 0.3 сек, пока не отпустишь кнопку. Тогда переходит в PLAY.В перерывах между rewind плеер пытается воспроизвести трек с начала.
State это и есть признак перемотки, через коммутатор он передаётся на счетчик, тот в свою очереь по этому значению и переключает на разблюренную текстуру бобины.
Если ты хочешь, чтобы бобины в данном случае переставали вертеться - тогда нужно закладываться именно что на текущую позицию, а не факт перемотки.
Так у меня же там и смена просто бобин, в одном скрипте
Так вот и получается, что опять надо скриптом отлавливать начало трека,
Ну, зря ты так сделал. Тут нужна другая структура ресурсов. Для каждой бобины должен один пункт-ссылка, например "Bobina", тот в свою очередь должен ссылаться на ещё два пункта-ссылки: Bob и Bob_b (обычная и размытая).Сами же текстуры будут в списке ресурсов парами: Bob1, Bob1_b, .... BobN, BobN_b. Вот их и надо отдельным скриптом подставлять в Bob и Bob_b (переключать их будт пользователь).А Bob или Bob_b в Bobina при перемотке.
Т. е. скриптов два? У меня структура текстур именно, как ты и описал, но смена в одном скрипте.
procedure Execute(var State: Integer);var S: String; begin if State = 0 then S:= '' else S:= '_b'; BeginUpdateResources; FindResource('Bobina').Set('ID', 'Bob' + S); EndUpdateResources;end;
Для начала нужно определиться, к чему крепится анимация, к позиции трека или к состоянию перемотки.
Да, и оба с предельно простым кодом типа:Code: [Select]procedure Execute(var State: Integer);var S: String; begin if State = 0 then S:= '' else S:= '_b'; BeginUpdateResources; FindResource('Bobina').Set('ID', 'Bob' + S); EndUpdateResources;end;Во втором скрипте уже пользователь переключает сами текстуры бобин (парами). Такое построение позволяет переключать текстуры даже в режиме перемотки.
Со вторым скриптом помочь?
procedure Execute(var State: Integer);var S: String; begin S := 'Bob' + IntToStr(State + 1); // если имена нумеруются с 1 (Bob1, Bob1_b...) BeginUpdateResources; FindResource('Bob').Set('ID', S); // имя текстуры будет BobN FindResource('Bob_b').Set('ID', S + '_b'); // имя текстуры будет BobN_b EndUpdateResources;end;