ITween动画

本文介绍了如何在Unity3D中利用ITween库实现UI元素的滑动关闭、透明度变化和缩放动画效果。通过UIAnimationController类的静态方法,如CloseSlideOut、TweenAlphaFromTo和ScaleFrom/ScaleTo,可以轻松控制UI组件的动画行为,同时支持自定义缓动类型、时间和回调函数。
摘要由CSDN通过智能技术生成
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class UIAnimationController{

	public static void CloseSlideOut(UIAnimationParam param)
	{
		if (param == null)
		{
			return;
		}
		if (string.IsNullOrEmpty(param._EaseType))
		{
			Hashtable table = iTween.Hash();
			table.Add("position", param._Pos);
			table.Add("time", param._Time);
			table.Add("islocal", true);
			table.Add("oncompletetarget", param._Target);
			if(string.IsNullOrEmpty(param._Del) == false)
			{
				table.Add("oncomplete", param._Del);
			}
			iTween.MoveTo(param._Target, table);
		}
		else
		{
			Hashtable table = iTween.Hash();
			table.Add("position", param._Pos);
			table.Add("time", param._Time);
			table.Add("islocal", true);
			table.Add("oncompletetarget", param._Target);
			if(string.IsNullOrEmpty(param._Del) == false)
			{
				table.Add("oncomplete", param._Del);
			}
			if(string.IsNullOrEmpty(param._EaseType) == false)
			{
				table.Add("easetype", param._EaseType);
			}
			iTween.MoveTo(param._Target, table);
		}
	}

	public static void TweenAlphaFromTo(UIAnimationParam param, EventDelegate.Callback del)
	{
		if(param == null)
		{
			return;
		}
		TweenAlpha tween = TweenAlpha.Begin(param._Target, param._Time, param._AlphaTo);
		tween.from = param._AlphaFrom;
		if(del != null)
		{
			EventDelegate.Add(tween.onFinished, del, true);
		}
	}

	public static void ScaleFrom(UIAnimationParam param)
	{
		if(param == null)
		{
			return;
		}
		param._Target.transform.localScale = Vector3.one;

		Hashtable table = iTween.Hash();
		table.Add("scale", new Vector3(param._ScaleFrom, param._ScaleFrom, param._ScaleFrom));
		table.Add("time", param._Time);
		table.Add("islocal", true);
		table.Add("oncompletetarget", param._Target);
		if(string.IsNullOrEmpty(param._Del) == false)
		{
			table.Add("oncomplete", param._Del);
		}
		if(string.IsNullOrEmpty(param._EaseType) == false)
		{
			table.Add("easetype", param._EaseType);
		}
		iTween.ScaleFrom(param._Target, table);
	}

	public static void ScaleTo(UIAnimationParam param)
	{
		if(param == null)
		{
			return;
		}
		param._Target.transform.localScale = Vector3.one;
		Hashtable table = iTween.Hash();
		table.Add("scale", new Vector3(param._ScaleTo, param._ScaleTo, param._ScaleTo));
		table.Add("time", param._Time);
		table.Add("islocal", true);
		table.Add("oncompletetarget", param._Target);
		if(string.IsNullOrEmpty(param._Del) == false)
		{
			table.Add("oncomplete", param._Del);
		}
		if(string.IsNullOrEmpty(param._EaseType) == false)
		{
			table.Add("easetype", param._EaseType);
		}
		iTween.ScaleTo(param._Target, table);
	}
}

public class UIAnimationParam
{
	public GameObject _Target;
	public Vector3 _Pos;
	public float _Time;
	public string _Del;
	public string _EaseType;
	public float _AlphaFrom;
	public float _AlphaTo;
	public float _ScaleFrom;
	public float _ScaleTo;
}

public static class UIAnimationPlayer
{
	public static void PlayEazyScaleOpen(GameObject go)
	{
		UIAnimationParam param = new UIAnimationParam();
		param._ScaleFrom = 0.5f;
		param._Time = 0.5f;
		param._Target = go;
		param._EaseType = "easeOutBack";
		UIAnimationController.ScaleFrom(param);
	}

	public static void PlayEazyScaleClose(GameObject go)
	{
		UIAnimationParam param = new UIAnimationParam();
		param._ScaleTo = 0.3f;
		param._Time = 0.2f;
		param._Target = go;
		param._Del = "CloseSelf";
		param._EaseType = "linear";
		UIAnimationController.ScaleTo(param);
	}

	public static void PlayEazyAlphaOpen(GameObject go, EventDelegate.Callback del)
	{
		UIAnimationParam param = new UIAnimationParam();
		param._Time = 0.3f;
		param._AlphaFrom = 0f;
		param._AlphaTo = 1f;
		param._Target = go;
		UIAnimationController.TweenAlphaFromTo(param, del);
	}

	public static void PlayEazyAlphaClose(GameObject go, EventDelegate.Callback del)
	{
		UIAnimationParam param = new UIAnimationParam();
		param._Time = 0.2f;
		param._AlphaFrom = 1f;
		param._AlphaTo = 0f;
		param._Target = go;
		UIAnimationController.TweenAlphaFromTo(param, del);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值