Как анимировать strokeDashOffset в Adobe XD? - PullRequest
1 голос
/ 23 марта 2020

В Adobe XD у меня есть пунктирный путь (или линия), который мне нужен для анимации. В другом программном обеспечении я всегда делал это, анимируя смещение da sh пути (его "фаза"). В Adobe XD это свойство существует, но не доступно через пользовательский интерфейс.

Я провел некоторое копание и обнаружил в API плагина, что Line и Path происходит от GraphicNode , и что они оба имеют свойство strokeDashOffset .

Я сделал быстрый плагин, который печатает и устанавливает эти значения, используя что-то по строкам из:

function animateLineDashCommand(selection) {
    let linesAndPaths = selection.items.filter(el => el instanceof Path || el instanceof Line);

    linesAndPaths.forEach(el => {
        el.strokeDashOffset = 10; // Or whatever test value I'm using.
    });
}

Это прекрасно работает, и путь определенно меняет свою фазу. Однако, если я размещаю одну и ту же линию на двух разных артбордах с разными фазами, а затем соединяю их вместе с помощью Auto Animate, свойство игнорируется. Я предполагаю, что за кадром это свойство не интерполируется.

Кто-нибудь знает способ анимирования этого свойства и / или альтернативное решение для анимации смещения пути в Adobe XD? Насколько мне известно, анимированные SVG или GIF в настоящее время невозможны.

Спасибо.

Обновление 1: Я попробовал ручное покадровое -фразовый подход внутри компонента, где каждое состояние по существу является кадром с разной фазой da sh. Идея состояла в том, чтобы сделать Компонент временной шкалой, чтобы анимация могла быть повторно использована в различных артбордах. Однако Компоненты не поддерживают триггер Time, что означает, что он может быть перенаправлен только при взаимодействии (щелчок, перетаскивание и т. Д. c). Этот подход не будет работать.

Обновление 2: Поскольку артборды имеют доступ к триггеру Time, я могу дублировать артборды столько раз, сколько мне нужно, и каждый из них содержит путь имеет свою фазу da sh, установленную соответственно. Это работает , но довольно болезненно, так как может потребовать большого количества дублированных артбордов, которых я хочу избежать. Существует также снижение производительности для быстрой анимации между плотными артбордами.

Я сделал быстрый плагин GUI, чтобы упростить это, и загрузил его в GitHub . Я оставлю этот вопрос открытым, если будет найдено лучшее решение.

...