#javascript #gsap #paperjs
Вопрос:
Я пытаюсь интегрировать его в существующую Paper.js заявка на замену оригинала .Функция чириканья (http://paperjs.org/reference/tween/). Единственная проблема, с которой я сталкиваюсь до сих пор, — это «цепочка» анимации свойств позиции или точки:
https://codepen.io/yevsim/pen/GRmPBZB
paper.install(window)
paper.setup(canvas);
const text = new PointText({
point: new Point(100, 100),
fontFamily: "sans-serif",
fontWeight: "bold",
fontSize: 48,
fillColor: 'black'
});
text.content = 'Move me';
const timeline = gsap.timeline();
timeline.to(text.point, { duration: 1, x: ' =100' });
timeline.to(text.point, { delay: 1, duration: 1, x: ' =100' });
По неизвестной мне причине он перемещает текст обратно в исходное положение перед выполнением второй анимации (т. е. вместо перехода со 100 -> 200 ->> 300, он переходит 100 ->>> 200 ->>>> 100 ->>>>> 200). Цепочка других свойств анимация, например, ширина, высота, цвет, непрозрачность, работает, как и ожидалось. Я пытался играть с заменой точки на позицию, комбинируя их вместе, но у меня ничего не получалось.
Комментарии:
1. Я рекомендую обсудить это на форумах GSAP, если вы еще этого не сделали.
2. Для тех, кому интересно, похоже
fromTo
( greensock.com/docs/v3/GSAP/Timeline/fromTo () ) — это путь сюда. Теперь ждем ответа с форумов GSAP. Обновим здесь.3. Похоже на Paper.js возвращает другой объект каждый раз, когда вы ссылаетесь
text.point
. Вот решение: greensock.com/forums/topic/. …
Ответ №1:
Я не совсем понимаю, почему, но это сработает, если вы сохраните text.point
в переменной и будете использовать эту переменную вместо ссылки на фактический объект при создании своей временной шкалы.
Основываясь на вашем коде, вот исправленная версия:
const text = new PointText({
point: new Point(100, 100),
fontFamily: 'sans-serif',
fontWeight: 'bold',
fontSize: 48,
fillColor: 'black',
content: 'Move me'
});
// Use a variable to reference the property to animate.
const point = text.point;
const timeline = gsap.timeline();
timeline.to(point, { duration: 1, x: ' =100' });
timeline.to(point, { delay: 1, duration: 1, x: ' =100' });