1. 问题iTween是很方便的一个动画工具,用起来也非常顺手,最近偶然遇到一个问题——oncomplete指定的函数没有被执行。
oncomplete属性可以指定动画结束时回调某个函数,为什么我的函数没有被回调呢(
小姑娘:因为你帅行了吧,快点进入正题!)
2. 原因后来才发现,oncomplete事件默认是调用目标对象的函数,所以,如果目标对象没有对应的函数,就无法被调用。
什么意思呢,如:
[cce_cs]
...
iTween.MoveBy(leftUI.gameObject, iTween.Hash(
"x", -4.6f,
"oncomplete", "LeftUIMoveEnd",
)
);
...
public void LeftUIMoveEnd()
{
isLeftUIMoving = false;
}
[/cce_cs]
在当前对象的某个函数里执行iTween的MoveBy函数,移动的目标对象是leftUI。
而oncomplete指定的LeftUIMoveEnd函数是在当前类对象里的,无法在leftUI的类里找到,这样是无法回调函数的。
一句话,MoveBy的第一个参数是谁,那么回调函数就必须写在谁的类里。(
小姑娘:表达能力真是越来越弱了,一句话——谁在移动,回调函数就要在谁的类里)
3. 解决方法要解决这个问题,很简单,主动指定oncompletetarget为this.gameObject。
如
[cce_cs]
iTween.MoveBy(leftUI.gameObject, iTween.Hash(
"x", -4.6f,
"oncomplete", "LeftUIMoveEnd",
"oncompletetarget", this.gameObject
)
);
[/cce_cs]