我目前正在使用GSAP JS库运行动画序列。
在运行动画的第一个实例后,我运行onComplete
函数,保存position()
的当前#myDiv
然后我尝试在动画的最后一个实例中使用coordX
值,但它只是显示为:无效的左补间值:undefined
有什么想法吗?
var coordX;
function regPosition() {
coordX = $("#mydiv").position().left;
}
function animationStart() {
//Initiate animation with onComplete
tl.to("#mydiv", 0.5, {borderRadius:"50%", width: "35%", onComplete: regPosition})
//Move #myDiv to another position than registered
.to("#mydiv", 0.5, {left: 1000})
//try to use the original position stored in "coordX"
.fromTo("#mydiv", 1.5, {left:-800}, {left:coordX});
}
animationStart();
答案 0 :(得分:2)
在第一个coordX
完成后实际调用onComplete
之前,不会设置.to
的值。在此之前,该值为undefined
。
问题是,在定义时间,coordX
的值为undefined
,这是您分配给left
的值。因此,当评估.to
时,它会看到undefined
值。
也许更好的方法是在onComplete
中启动反向动画:
function animationStart() {
tl.to("#mydiv", 0.5, {
borderRadius:"50%",
width: "35%",
onComplete: function() {
var coordX = regPosition();
tl.to("#mydiv", 0.5, {left: 1000})
.fromTo("#mydiv", 1.5, {left:-800}, {left: coordX});
}
})
}
答案 1 :(得分:0)
您的代码在时间方面存在一些逻辑问题。执行每个步骤需要一些时间,在完成所有步骤之前,不会调用onComplete
函数。不要使用onComplete
回调,只需在启动动画之前保存coordX
,然后在完成动画时使用它。
答案 2 :(得分:0)
创建一个变量,保存位置介绍并稍后使用.. 我更喜欢.offset()......