问题:
我想知道是否有办法在greensock中为staggerFrom
/ staggerTo
函数添加负延迟?
问题:
我的动画运行时间太长,不符合我的喜好。如果我的交错动画可能会发生,因为之前的动画正在播放以缩短持续时间,那将是很棒的。
示例:
我已将这个代码集放在一起,以说明我所追求的内容:http://codepen.io/nickspiel/pen/LpepvQ?editors=001
您可以在codepen中看到我在基本from
时间轴函数上使用了负延迟,但这对staggerForm
函数不起作用,因为延迟参数用于延迟每个jquery集合的元素。
答案 0 :(得分:2)
您是否尝试过使用GSAP最新 v1.18.0 中引入的新 cycle
属性?
因此,您可以使用delay
循环,但在0
来电中将stagger
作为staggerTo
值传递。
此外,您可以将position
参数传递给staggerTo
调用,使其与之前插入的补间重叠。
Here 是一个想法的分叉笔。
<强> JavaScript的:强>
...
animateElement = function() {
timeline.from(main, 0.3, { scaleY: '0%', ease: Back.easeOut.config(1.7) })
.staggerFrom(dataBlocks, 0.3, { cycle: { delay: function(index) {
return index * 0.1;
}}, scale: '0%', y: 100, ease: Back.easeOut.config(1.7) }, 0)
.from(lineGraphLines, 1.5, { drawSVG: 0, ease: Power1.easeOut }, '-=0.5')
.from(lineGraphAreas, 1, { opacity: 0, ease: Back.easeOut.config(1.7) }, '-=2.0')
.staggerFrom(lineGraphDots, 0.2, { cycle: { delay: function(index) {
return index * 0.1;
}}, scale: 0, ease: Back.easeOut.config(1.7) }, 0, '-=1.0')
.staggerFrom(donutCharts, 0.6, { cycle: { delay: function(index) {
return index * 0.1;
}}, drawSVG: 0, ease: Power1.easeOut }, 0, '-=2.0')
.from(menuBackground, 0.3, { scaleX: '0%', ease: Back.easeOut.config(1.7) }, '-=6')
.staggerFrom(menuElements, 0.3, { cycle: { delay: function(index) {
return index * 0.1;
}}, scaleX: '0%', ease: Back.easeOut.config(1.7) }, 0, '-=1')
.from(headerBackground, 0.5, { scaleX: '0%', ease: Power1.easeOut }, '-=5.5')
.staggerFrom(headerBoxes, 0.3, { cycle: { delay: function(index) {
return index * 0.1;
}}, scale: '0%', ease: Back.easeOut.config(1.7) }, 0, '-=1.0')
.staggerFrom(headerText, 0.4, { cycle: { delay: function(index) {
return index * 0.1;
}}, scaleX: '0%', ease: Back.easeOut.config(1.7) }, 0, '-=1.0')
.from(headerText, 0.4, { scaleX: '0%', ease: Back.easeOut.config(1.7) }, '-=4');
};
...
这可能不是您想要的动画类型,但您需要根据自己的喜好调整大多数/所有补间中的position
参数,但我认为主要内容为您带走将cycle
与delay
一起使用。
希望这在某种程度上有所帮助。
P.S。您可以传递负stagger
值,但它们具有不同的含义。它告诉引擎从最后一个元素开始交错动画。
答案 1 :(得分:0)
我在Greensock GitHub repo上问了同样的问题并得到了以下回复:
绝对 - 已经出炉了。我不确定你是否正在使用 TweenMax或其中一个时间轴类,所以我将向您展示:
TweenMax.staggerTo(elements, 1, {x:100, delay:2}, 0.01);
// - OR -
var tl = new TimelineLite();
tl.staggerTo(elements, 1, {x:100, delay:2}, 0.01);
// - OR -
var tl = new TimelineLite();
tl.staggerTo(elements, 1, {x:100}, 0.01, "label+=3");
在我的情况下,最后一个选项完美无瑕。