只有你足够强,别人才会和你讲道理。
文章: 280
浏览: 3,030,060
  • 博主:笨木头
  • 关注:Unity、Net Core、Blazor
  • 邮箱:musicvs@163.com
笨木头  2016-12-15 08:31     Unity3D     阅读(9402)     评论(0)
转载请注明,原文地址: http://www.benmutou.com/archives/2244
文章来源:笨木头与游戏开发


 


 
笨木头花心贡献,啥?花心?不,是用心。

转载请注明,原文地址:http://www.benmutou.com/archives/2244

文章来源:笨木头与游戏开发
 

 

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]
0 条评论
发表评论
粤ICP备16043700号

本博客基于 BlazorAnt Design Blazor 开发