DOTween 模仿NGUI Tween
2015-10-21 22:33
423 查看
最近再做一个小的项目,只要使用的是DOTween 动画。 但是感到DOTween 在某些方面不如 NGUI的Twenn 比较好用 所以就模仿了一下
在此,请各位大神指点一下
基于某些原因 twenn 的动画方式没有写 如果各位需要 请自行添加
下面附上链接
链接:http://pan.baidu.com/s/1c0dlWkC 密码:iaue
在此,请各位大神指点一下
public class HCTweenScale :DoTweener { public Vector3 formScale; public Vector3 toScale; public float animTime = 1f; Transform tr; Transform myTransform { get { if (tr == null) tr = transform; return tr; } set { tr = value; } } Vector3 Scale { get{ return myTransform.localScale; } } public override void PlayForward() { StyleFunction(formScale, toScale); } public override void PlayReverse() { StyleFunction(toScale, formScale); } void StyleFunction(Vector3 from, Vector3 to) { switch (style) { case Style.Once: One(from, to); break; case Style.Loop: Loop(from, to); break; case Style.Repeatedly: Repeatedly(from, to); break; case Style.PingPong: PingPong(from, to); break; } } void One(Vector3 from, Vector3 to) { myTransform.localScale = from; myTransform.DOScale(to, animTime).OnComplete(() => OnComplete()); } void Repeatedly(Vector3 from, Vector3 to) { myTransform.localScale = from; myTransform.DOScale(to, animTime).OnComplete(() => myTransform.DOScale(from, animTime)); } void Loop(Vector3 from, Vector3 to) { myTransform.localScale = from; myTransform.DOScale(to, animTime).OnComplete(() => Loop(from,to)); } void PingPong(Vector3 from, Vector3 to) { myTransform.DOScale(to, animTime).OnComplete(() => PingPong(to, from)); } protected override void StartValue() { formScale = Scale; } protected override void EndValue() { toScale = Scale; } }
public class HCTweenPosition : DoTweener{ public Vector3 Form; public Vector3 To; public float MoveTime=1f; Transform my; Transform myTransform { get { if (my == null) my = transform; return my; } } Vector3 position { get { return myTransform.position; } } public override void PlayForward() { StyleFunction(this.Form, this.To); } public override void PlayReverse() { StyleFunction(this.To, this.Form); } void StyleFunction(Vector3 From, Vector3 To) { switch (style) { case Style.Once: One(From, To); break; case Style.Loop: Loop(From, To); break; case Style.Repeatedly: Repeatedly(From, To); break; case Style.PingPong: PingPong(From, To); break; } } void One(Vector3 From, Vector3 To) { myTransform.position = From; myTransform.DOMove(To, MoveTime).OnComplete(() => OnComplete()); } void Repeatedly(Vector3 From,Vector3 To) { myTransform.position = From; myTransform.DOMove(To, MoveTime).OnComplete(() => myTransform.DOMove(Form, MoveTime)); } void Loop(Vector3 From, Vector3 To) { myTransform.position = From; myTransform.DOMove(To, MoveTime).OnComplete(() => Loop(Form, To)); } void PingPong(Vector3 From, Vector3 To) { myTransform.DOMove(To, MoveTime).OnComplete(() => PingPong(To, From)); } protected override void StartValue() { Form = this.position; } protected override void EndValue() { To = this.position; } }
public class HCTweenAlpha :DoTweenerAlpha { public float StartAlpha; public float EndAlpha; public float durtion = 1f; tk2dBaseSprite _sprite; tk2dBaseSprite sprite { get { if (_sprite == null) { _sprite = gameObject.GetComponent<tk2dBaseSprite>(); } return _sprite; } set { _sprite = value; } } public float GetAlpha { get { return sprite.color.a; } } bool Forward = true; public override void PlayForward() { Forward = true; StyleFunction(StartAlpha, EndAlpha, durtion, style); } public override void PlayReverse() { Forward = false; StyleFunction(EndAlpha, StartAlpha, durtion, style); } void StyleFunction(float fromAlpha, float toAlpha,float animTime, DoTweener.Style style) { if (sprite == null) { Des(); return; } // SetChildAlpha(fromAlpha, toAlpha, animTime, style); switch (style) { case Style.Once: One(fromAlpha, toAlpha, animTime); break; case Style.Loop: Loop(fromAlpha, toAlpha, animTime); break; case Style.Repeatedly: Repeatedly(fromAlpha, toAlpha, animTime); break; case Style.PingPong: PingPong(fromAlpha, toAlpha, animTime); break; } } //float notAlpha; //public override void SetAlpha(float startalpha, float alpha,float animTime, DoTweener.Style style) { // if (notAlpha == null) // notAlpha = GetAlpha; // if (alpha >= notAlpha) // alpha = notAlpha; // if (startalpha > notAlpha) // startalpha = notAlpha; // StyleFunction(startalpha, alpha, animTime, style); //} void One(float fromAlpha, float toAlpha,float time) { sprite.color = new Color(sprite.color.r, sprite.color.g, sprite.color.b, fromAlpha); DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, toAlpha, time).OnComplete(() => OnComplete()); } void Repeatedly(float fromAlpha, float toAlpha, float time) { sprite.color = new Color(sprite.color.r, sprite.color.g, sprite.color.b, fromAlpha); DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, toAlpha, time).OnComplete(() => DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, fromAlpha, time)); } void Loop(float fromAlpha, float toAlpha, float time) { sprite.color = new Color(sprite.color.r, sprite.color.g, sprite.color.b, fromAlpha); DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, EndAlpha, time).OnComplete(() => Loop(fromAlpha, toAlpha, time)); } void PingPong(float fromAlpha, float toAlpha, float time) { DOTween.ToAlpha(() => sprite.color, x => sprite.color = x, toAlpha, time).OnComplete(() => PingPong(toAlpha, fromAlpha, time)); } protected override void StartValue() { if (sprite) { StartAlpha = sprite.color.a; EndAlpha = sprite.color.a; return; } } void Des() { Destroy(GetComponent<HCTweenAlpha>(), 1f); HCTweenTextAlpha text = gameObject.AddComponent<HCTweenTextAlpha>(); text.StartAlpha = this.StartAlpha; text.EndAlpha = this.EndAlpha; text.durtion = this.durtion; text.style = this.style; text.IsStartRun = this.IsStartRun; if (Forward) text.PlayForward(); else text.PlayReverse(); } }
tween.OnComplete = () => { Debug.Log("这里是 回调"); }
基于某些原因 twenn 的动画方式没有写 如果各位需要 请自行添加
下面附上链接
链接:http://pan.baidu.com/s/1c0dlWkC 密码:iaue
相关文章推荐
- 【IOS 开发学习总结-OC-63】UIImage 与 CGImage,CGImageRef
- 黑马程序员--GUI
- String、StringBuffer和StringBuilder的异同和用法
- 【UIKit-106-1】UISwitch - 基础使用
- UVA-11324 The Largest Clique (强连通+DP)
- 斯坦福大学公开课 iOS应用开发教程学习笔记(第六课)多个MVC的程序和故事版、UINavigationController、 Segues
- UIButton详解
- 删除链表中(不带头结点)值为value的结点,返回删除的个数
- percona慢查询分析工具:pt-query-digest使用介绍
- Ui培训之如何设计极简三色图标
- LeetCode---Unique Paths
- 移动界面UI颜色设计
- UI设计培训之进入BAT公司的前提
- GUI测试软件22款
- Android中的Uicc框架(转)
- UICollectionViewController 用来创建流水布局 和 常见九宫格布局
- MiniUI动态添加table表格
- IOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
- [android]AlertDialog和AlertDialog.Builder
- easyui 调用ajax时的loading效果