iTween的回调 对oncompletetarget的理解

来源:互联网 发布:12315 如何投诉淘宝网 编辑:程序博客网 时间:2024/06/16 00:42
做个测试,对一个对象同时做2个MoveTo操作,都在完成缓动后回调打印信息。结果是只会打印onComplete222()里的信息。


[csharp] view plaincopy
  1. void testTween()  
  2. {  
  3.     GameObject obj = new GameObject();  
  4.     iTween.MoveTo(obj, iTween.Hash("x", 10, "oncomplete","onComplete111","oncompletetarget",gameObject));  
  5.     iTween.MoveTo(obj, iTween.Hash("y", 20, "oncomplete","onComplete222","oncompletetarget",gameObject));  
  6. }  
  7. void onComplete111()  
  8. {  
  9.     Debug.Log("onComplete111");  
  10. }  
  11. void onComplete222()  
  12. {  
  13.     Debug.Log("onComplete222");  
  14. }  



在iTween里传递的oncomplete的参数是字符串形式,回调时会从oncompletetarget指定的对象里找oncomplete指定的函数。iTween不是保存的引用关系,不管多少个缓动一起播放最终只能回调其中一个。


对于oncompletetarget参数,这个参数很重要。如果不指定该参数,回调时回去缓动对象obj里去找oncomplete指定的函数,如果像上面那样回调方法在obj外,则需要指定有这个oncomplete函数的对象,看看文档里的解释:
A <see cref="GameObject"/> for a reference to the GameObject that holds the "oncomplete" method.


这是两个坑爹的地方,不小心很容易掉进去。
加上之前遇到的如果对象隐藏,回调也不会执行到,目前2.0版本的iTween只是完成了基本的功能,但并不够强大,而对于这些问题也没有明确的解释,不如greensock做的好。
1 0