Animation 动画结束前正在执行Tweenmax回调

Animation 动画结束前正在执行Tweenmax回调,animation,callback,gsap,Animation,Callback,Gsap,我正在使用greensock gsap在我的网站上制作动画。问题是在动画结束之前执行的回调。在下面的示例中,将在动画的一半的某处删除元素 TweenLite.to($(".flipper"), 2, {rotationY:180,onComplete:function(){ $(this).remove() }}); 有人遇到过同样的问题吗?没有,对我来说很好(见下面的JSFIDLE)。但是,回调函数中的这个不是动画对象,而是tween。因此,如果要在动画之后删除它,则必须使用this

我正在使用greensock gsap在我的网站上制作动画。问题是在动画结束之前执行的回调。在下面的示例中,将在动画的一半的某处删除元素

TweenLite.to($(".flipper"), 2, {rotationY:180,onComplete:function(){
    $(this).remove()
}});
有人遇到过同样的问题吗?

没有,对我来说很好(见下面的JSFIDLE)。但是,
回调函数中的这个
不是动画对象,而是tween。因此,如果要在动画之后删除它,则必须使用
this.target
,如下所示:

TweenLite.to($(".flipper"), 1, {rotationY:180,onComplete:function(){
    (this.target).remove()
}});

我始终建议您使用OnUpdate示波器、onCompleteScope等,这样您就完全清楚您正在做的工作的范围。这方面的文档相当少,因为它有点隐蔽。greensock的所有onDoSomething函数都有一个范围参数

TweenLite.to($(".flipper"), 2, {rotationY:180,onCompleteScope: $(".flipper"),
    onComplete:function(){$(this).remove()
}});

让孩子们完全明白$(this)=$(“.flipper”)。当您想要对tween进行超出范围的更改时,这也非常有用。根据您运行tween的位置,它可能无法访问其作用域之外的jquery对象,但您可以通过onCompleteScope传入不同的作用域。

正如@hjuster指出的,CSS中声明的转换可能与TweenMax中的onComplete回调冲突。我认为onComplete在错误的时间调用的原因是

我在css中声明了转换,它不到2秒,这导致了问题。。。