Автор: Саша Окунев Уровень: для начинающих

В Фигме есть механизм анимации векторных объектов, который называется Smart Animate. Он позволяет анимировать ширину, высоту, опасити и другие свойства.

Два фрейма при этом берут на себя функцию ключевых экранов начала и окончания анимации. Анимация может быть настроена для момента перехода с одного фрейма на другой.

В этом уроке мы сделаем простой прототип с кнопкой Скачать, лоадером и иконкой подтверждения, что что-то скачалось.

Что получится:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9e540c85-0285-4180-9d8e-e9006fde4ddb/loader2.mov

<aside> <img src="https://super.so/icon/dark/figma.svg" alt="https://super.so/icon/dark/figma.svg" width="40px" /> Проект в Figma Community Можно дублировать себе и разобрать самостоятельно

</aside>

  1. Создаём фрейм 320х200, рисуем в нём кнопку.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/afcc6d4f-2dc2-4c68-b4b4-343107be95ce/Untitled.png

  2. Дублируем фрейм, **Cmd** **D**. Во втором удаляем кнопку и рисуем два прямоугольника 256x8 со скруглёнными углами, которые наложены друг на друга. Нижний называем «1», он будет телом лоадера, верхний — «2», он будет заполняющейся частью. Подтягиваем 2 за правый край, чтобы он был покороче. 1 делаем на 20% опасити.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c47048c2-7b54-4437-b0a1-38d979c88c22/Untitled.png

  3. Дублируем второй фрейм. Третий фрейм будет показывать загруженный лоадер.

    Растягиваем верхний прямоугольник до длины нижнего, чтобы заслонить нижний.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3621df1b-0557-476a-9fed-0e961f5d771b/Untitled.png

  4. Дублируем фрейм и на следующем задаём слою 2 размер 32 х 32. Фиксируем пропорции функцией Constrain Proportions.

    <aside> ⚠️ Важно, чтобы слой назывался так же, как на предыдущем экране, потому что при помощи названий слоёв Фигма связывает переходы.

    </aside>

    Ставим слой 2 на центр: Alt H, Alt V.

    Слой 1 удаляем с фрейма 4.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1c101995-de87-4ec7-b959-81972fed4ffd/Untitled.png

  5. На следующем фрейме делаем слой 2 немного больше, 40х40. Смещаем на центр. При помощи пера рисуем галку, зажав **Shift**. Толщина — 5.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8b33a364-a67a-4cb2-8136-fb76c9bc29b1/Untitled.png

  6. Теперь скликаем прототип и настроем анимации. Выделяем кнопку на первом, открываем вкладку Prototype, **Alt** **9**, перетаскиваем связь от кнопки на второй фрейм. Меняем анимацию c Instant на Dissolve, чтобы переход между кнопкой и лоадером был с эффектом фейда. за эту треть секунды мы будем видеть постепенно проявляющийся фрейм 2 без анимации и успеем осознать его, прежде чем начнётся движение лоадера. Если запускать анимацию без этого перехода с паузой, мы осознаем лоадер уже в момент, когда началось движение, а это не очень комфортно. Когда начинается анимация, мы должны быть к ней готовы.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d72e26a3-6fc4-4d45-9d20-7c44eb14deee/Untitled.png

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/caa47836-4502-4675-a83b-7fdd144a6000/Untitled.png

  7. На весь второй фрейм вешаем связь к третьему. Это главный переход, в котором мы задаём длительность заполнения лоадера.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/536a77a0-b72c-4fc8-8688-5437f5365a4a/Untitled.png

    Меняем тип триггера с On Click на After Delay. Это означает, что анимация будет запускаться по таймеру без каких-либо активных действий с нашей стороны. Ставим дилей на минимум: 1ms.

    Длительность анимации — 2000ms, что составит 2 секунды, что довольно долго.

    Переключаем анимацию в Smart Animate, ставим тип сглаживания Ease In And Out. Это значит, что она будет медленно начинаться, ускоряться к середине и замедляться в конце.

    В реальной жизни, когда что-то загружается, эта анимация будет не такой гладкой, но наша задача здесь — показать, что она в принципе есть.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1af658e0-0a3b-43fe-8241-6228655edfe5/Untitled.png

  8. Вешаем связь между фреймами 3 и 4. Здесь мы определяем задержку до начала морфинга лоадера в иконку. Я использовал небольшое значение в 200ms, чтобы немного отделить анимацию движения лоадера от анимации морфинга. Тип анимации остаётся Smart Animate, тип сглаживания — Ease Out, время морфинга — 300ms.

    Поскольку ранее мы удалили слой 1 на фрейме 4, во время этого перехода он будет фейдом уходить в 0, поскольку Фигма не обнаружит его.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f96e5da8-96da-4372-8bb0-4d3eade7ff5e/Untitled.png

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4f171a99-b870-4d29-b269-729a35632ea6/Untitled.png

  9. Вешаем связь между фреймами 4 и 5. В этом переходе будет проявляться галочка, а зелёный круг будет увеличиваться с 32 до 40.

    Захлёст

    Чтобы анимация круга была более интересной, мы выберем тип сглаживания Ease In and Out Back. Он предполагает, что анимация имеет захлёст, из-за которого круг на какое-то время увеличится даже больше, чем 40 х 40, а затем уменьшается до размера 32 x 32.

    <aside> 📎 Подробнее про захлёст можно узнать в принципе анимации №5.

    </aside>

    Настроенная связь:

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7cf3a49b-080c-4664-bbd0-5e4e6f8b15a3/Untitled.png

    Настройки анимации:

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b2009be1-272b-44e4-8d60-ef5d411a8616/Untitled.png