Radio button

Правила форума
Уроки в плейлисте YouTube "Скрипты и выражения в After Effects"
https://www.youtube.com/playlist?list=PL-JXfMS5pUAAi0yrIenAiwMLUEE3t9woE
Canonical Link

Автор темы
Maximus_KZ
Нуб
Нуб
Сообщения: 4
Зарегистрирован: 01 окт 2018, 08:37

Radio button

Сообщение #1 Maximus_KZ » 26 дек 2018, 08:23

Всем здравствуйте.
Задача вроде несложная, и казалось бы востребованная в автоматизации работы в AE, но найти чего то толкового не получается. Итак, Radio button. Имеется несколько слоев, которые должны включаться чекбоксами в контрольном слое по необходимости, а остальные автоматически выключаться. По типу этого:
Изображение
Вот так на данный момент выглядит композ.
Изображение
Вроде бы не сложно. Найдено в сети выражение:

Код: Выделить всё

if(effect("ch1")("Checkbox") == true || effect("ch2")("Checkbox")  == true|| effect("ch3")("Checkbox")  == true|| effect("ch5")("Checkbox") == true) false else true
Которое привязывается к чекбоксу, и выражение которое привязывается к прозрачности слоя

Код: Выделить всё

if(thisComp.layer("choose").effect("ch1")("Checkbox") == true) 100 else 0

Но это всё работает до тех пор, пока не сдвинут ползунок таймлайна. Как только сдвинул, флажок скидывается на другой чекбокс и ничего не работает. Также глюки с прозрачностью слоя. Несмотря на то, что значение непрозрачности показывает 100, видно другой слой. Кароче глюк на глюке. Как написать выражение, чтобы это всё хозяйство работало? На данный момент выражения написаны примерно так:

Код: Выделить всё

this is for the first one
var s = effect("Checkbox Control")("Checkbox") ;
var s1 = effect("Checkbox Control 2")("Checkbox") ;
var s2 = effect("Checkbox Control 3")("Checkbox") ;

if ( s1 == 1 || s2 == 1   ){
 s = 0 ;
}else
{
s = effect("Checkbox Control")("Checkbox") ;
}

// the second
var s = effect("Checkbox Control")("Checkbox") ;
var s1 = effect("Checkbox Control 2")("Checkbox") ;
var s2 = effect("Checkbox Control 3")("Checkbox") ;

if ( s == 1 || s2 == 1   ){
 s1 = 0 ;
}else
{
s1 =effect("Checkbox Control 2")("Checkbox") ;
}
s1

// the third
var s = effect("Checkbox Control")("Checkbox") ;
var s1 = effect("Checkbox Control 2")("Checkbox") ;
var s2 = effect("Checkbox Control 3")("Checkbox") ;

if ( s == 1 || s1 == 1   ){
 s2 = 0 ;
}else
{
s2 = effect("Checkbox Control 3")("Checkbox") ;
}
s2

Но флажки сбрасываются при передвижении ползунка. Может туда добавить команду valueAtTime? Только куда?




Аватара пользователя

aeplug
Санта
Санта
Сообщения: 2802
Зарегистрирован: 18 мар 2016, 23:20
Откуда: С Ютуба
Благодарил (а): 18 раз
Поблагодарили: 274 раза
Контактная информация:

Сообщение #2 aeplug » 26 дек 2018, 13:37

Ну ты может проект приложишь? Или я как буду по картинкам его создавать? :bouaaaaah:
Maximus_KZ писал(а):Источник цитаты Найдено в сети выражение

Я вообще не вижу теоретическую причину, чтоб это работало. Если говорить про обычные программы, то там есть событие "изменено", ты щелкаешь - они сбрасываются и больше никогда. А в After Effects этого нет, формула срабатывают в каждом кадре. Каким образом происходит пересчет в таком случае значений мне не понятно. К тому же - где в формуле проверка ch4 :slow: ?

Можно сделать проще - обычный слайдер.
Если 1 - то прозрачность одного слоя 100 иначе 0
Если 2 - то прозрачность 2-го слоя 100 иначе 0
Если 3 - то прозрачность 3-го слоя 100 иначе 0
и т.д.
И место занимать не будет лишнего, надо только прописать где-то какой номер за какой образ отвечает )
Но вообще надо осторожно это использовать, есть у меня подозрение, что если таких слоев ну штук 5 и они сложные, то нужен то всего один, а считаться будут все 5! Они же не выключаются в прямом смысле слова. Разве что в прекомпе какие-нибудь картинки переключать например для формы частиц. Тогда норм. Хотя с этим можно и вообще не запариваться - просто пусть руками выбирают.
Видео уроки для After Effects http://www.youtube.com/AEPlug
Платные консультации по работе в программах


Вернуться в «Вопросы о выражениях и скриптах»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей