【unity3d笔记】关于iTween的oncomplete函数无法执行的问题

来源:互联网 发布:淘宝经常出现的男模特 编辑:程序博客网 时间:2024/06/09 23:53

原文地址:http://www.benmutou.com/archives/2244

  1. 问题
    iTween是很方便的一个动画工具,用起来也非常顺手,最近偶然遇到一个问题——oncomplete指定的函数没有被执行。
    oncomplete属性可以指定动画结束时回调某个函数,为什么我的函数没有被回调呢(小姑娘:因为你帅行了吧,快点进入正题!)

  2. 原因
    后来才发现,oncomplete事件默认是调用目标对象的函数,所以,如果目标对象没有对应的函数,就无法被调用。
    什么意思呢,如:

... iTween.MoveBy(leftUI.gameObject, iTween.Hash(               "x", -4.6f,               "oncomplete", "LeftUIMoveEnd",               )           ); ...   public void LeftUIMoveEnd()   {       isLeftUIMoving = false;   }

在当前对象的某个函数里执行iTween的MoveBy函数,移动的目标对象是leftUI。
而oncomplete指定的LeftUIMoveEnd函数是在当前类对象里的,无法在leftUI的类里找到,这样是无法回调函数的。
一句话,MoveBy的第一个参数是谁,那么回调函数就必须写在谁的类里。(小姑娘:表达能力真是越来越弱了,一句话——谁在移动,回调函数就要在谁的类里)

  1. 解决方法
    要解决这个问题,很简单,主动指定oncompletetarget为this.gameObject。
iTween.MoveBy(leftUI.gameObject, iTween.Hash(               "x", -4.6f,               "oncomplete", "LeftUIMoveEnd",               "oncompletetarget", this.gameObject               )           );
1 0