最近再做一个小的项目,只要使用的是DOTween 动画。 但是感到DOTween 在某些方面不如 NGUI的Twenn 比较好用 所以就模仿了一下

在此,请各位大神指点一下

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

DOTween 模仿NGUI Tween的更多相关文章

  1. UGUI 过渡动画插件,模仿NGUI的Tween (转载)

    最近在相亲,后来好朋友跟我说他写了一个好插件,于是我就把女朋友甩了,看看他的插件,可以在UGUI制作简单过渡动画. 我看了下是模仿NGUI的Tween, 我在筱程的基础上稍微改到人性化, 简单支持的让 ...

  2. Unity NGUI Tween的用法

    unity版本:4.5 NGUI版本:3.6.5 参考链接:http://www.colabug.com/thread-1029974-1-1.html,作者:COLABUG.COM 橘虞   htt ...

  3. NGUI Tween动画Scale与Transform冲突

    NGUI中我们要同时完成Scale与Transform的效果,会发现动画并不是同我们想的那样运行的. 原因就是Tween Scale与Tween Transform的冲突调用. Tween Scale ...

  4. Unity NGUI Tween动画回调不执行问题

    最近工作中遇到了一个问题 NGUI的Tween动画完成 回调函数 偶尔不执行 偶现Bug 今天我仔细看了下代码发现 TweenPosition tempTween = varTar.GetCompon ...

  5. Ngui Tween 组合动画 group

    使用NGUI的Tween做补间动画,难免会涉及组合各种Tween.最常用的就是 Scale+Alpha组合 做淡入淡出了.那么如何控制 播放完一个Tween 后在 播放另一个Tween呢? 利用del ...

  6. NGUI Tween几种用法随手记

    需要明确下几种动画的用法 play begin EventDelegate.add TweenPlayer ---------------------------------------------- ...

  7. unity3d 扩展NGUI Tweener —— TweenTime

    这是今天做的一个小功能 策划想要一个时间滚动效果 那就搞呗!思路和之前写的tweenFillAmount一样 传送门:http://www.cnblogs.com/shenggege/p/479892 ...

  8. NGUI学习笔记汇总

    NGUI学习笔记汇总,适用于NGUI2.x,NGUI3.x 一.NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加 ...

  9. unity3d 扩展NGUI Tweener —— TweenFillAmount

    好久没写博客了,上一篇是在今年上班之前写的 从年初到现在一篇没写过,每天都在加班,实在太忙了 上班半年多了,学到不少东西 今天分享一下刚写的小功能 TweenFillAmount 用过NGUI Twn ...

随机推荐

  1. MySQL中多表删除方法(转载)

    如果您是才接触MySQL数据库的新人,那么MySQL中多表删除是您一定需要掌握的,下面就将为详细介绍MySQL中多表删除的方法,供您参考,希望对你学习掌握MySQL中多表删除能有所帮助. 1.从MyS ...

  2. 04747_Java语言程序设计(一)_第3章_面向对象编程基础

    链式编程 每次调用方法后,返回的是一个对象 /* * 链式编程 * 每次调用方法后,返回的是一个对象 */ class Student { public void study() { System.o ...

  3. Linux环境 Mysql新建用户和数据库并授权

    测试环境:linux 和Mysql 5.5.35 一.新建用户 //登录Mysql@>mysql -u root -p@>密码//创建用户mysql> insert into mys ...

  4. 【Spark Core】任务运行机制和Task源代码浅析1

    引言 上一小节<TaskScheduler源代码与任务提交原理浅析2>介绍了Driver側将Stage进行划分.依据Executor闲置情况分发任务,终于通过DriverActor向exe ...

  5. uva 1291(dp)

    题意:有一台跳舞机,中间是0.上左下右分别代表1 2 3 4,初始状态人站在中间.两仅仅脚都踏在0上,然后给出一段序列以0为结束,要按顺序踩出来,从0踏到四个方向须要消耗2点能量,从一个方向到相邻的方 ...

  6. parseInt引发的血案

    今天做了个专题活动,页面头上有个倒计时 专题做完后上线了,没发现有什么问题,结果,运营MM突然和我说:技术哥哥出问题了,360浏览器在秒数从10到09的时候直接变成 00 了! 一看我去真的,该死的3 ...

  7. [canvas]通过动态生成像素点做绚丽效果

    本例中的粒子就是实实在在的像素,由js代码在canvas上动态生成的像素点!这些像素点通过一个运动方法有规律地动了起来.透过这个思路,我们可以想到很多很炫的效果,但是这个性能有待考察.实验证明,动态控 ...

  8. iOS方法类:CGAffineTransform的使用

    CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放.旋转和平移操作: 另称放射变换矩阵,可参照线性代数的矩阵实现方式0. ...

  9. Java—NumberFormat与DecimalFormat类

    1.NumberFormat表示数字的格式化类 NumberFormat表示数字的格式化类,即:可以按照本地的风格习惯进行数字的显示. No. 方法 类型 描述 1 public static Loc ...

  10. OpenCV——视频颜色识别

    #include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace c ...