OT源代碼的分析,OrtHello 遲早攻破你 (一)OTTween類參透

首先是OT包括了_Base , Graphics , Tweening 三個文件夾,


其先我們說說Tweening ,其實就是ITweens的OrtHello版本,非常容易理解,如果只是使用2D移動的話不妨考慮使用這個方法,在代碼中是叫做OTTween的

OTTween 接受三個參數
1 object owner
    Object that will have the 'public' properties we are going to tween.

   

2 float duration

    Duration of this tween.


3  OTEase easing

    'Default' Easing function of this tween. ( get using OTEasing )

使用方法:

new OTTween(GetComponent<OTSprite>(), 1f, OTEasing.ElasticOut).
    Tween("size", new Vector2(80, 80)).
    Tween("tintColor", new Color(0.5f + Random.value * 0.5f, 0.5f + Random.value * 0.5f, 0.5f + Random.value * 0.5f), OTEasing.StrongOut);
在你創建了OTTween之後,你必須用下面的方式使用它們
    Tween( string property, object fromValue, object toValue, OTEase easing )
來看看它的重載函數:
   Tween(string var, object fromValue, object toValue)  默認的 this.easing = OTEasing.Linear;
   Tween(string var, object toValue, OTEase easing, OTEase pongEasing)  後面一個屬性是Easing when 'ponging'
   Tween(string var, object toValue)
   Tween(string var, object toValue, OTEase easing) //可能比較常用的
   Tween(string var, object fromValue, object toValue, OTEase easing)
   Tween(string var, object fromValue, object toValue, OTEase easing, OTEase pongEasing)
設置基本的屬性,和要達到的目標
    TweenAdd(string var, object addValue)
    TweenAdd(string property, object addValue, OTEase easing )
    TweenAdd(string var, object addValue, OTEase easing, OTEase pongEasing)

    Wait ( float waitTime )
設置等待時間=,=相當於cocos2d中的CCdelaytime

    TweenVar(object fromValue, object toValue, OTEase easing, FieldInfo field, PropertyInfo prop)
某些值的改變,可改變的值爲:single,int,double,vector2,vector3 ,color
    Stop()
立刻停止某個動作
     InitCallBacks(Component target)
    {
        callBackTargets.Add(target);
    }
回調函數的設置
 
關鍵是看看Update的工作:
 
   public bool Update(float deltaTime)
    {    
        if (_doStop)
        {
            _running = false;
            return true;
        }
        
        if (waitTime>0)
        {
            waitTime -= Time.deltaTime;
            if (waitTime>0) return false;
        }
        if (vars.Count==0) return false;
        _running = true;
        
        time+=deltaTime;
        if (time > duration) time = duration;
        for (int v=0; v<vars.Count; v++)
        {
            OTEase easing = this.easing;
            if (easings[v] != null)
                easing = easings[v];
            TweenVar(fromValues[v],toValues[v],easing,fields[v],props[v]);
        }
        if (time == duration)
        {
            _running = false;
            if (onTweenFinish != null)
                onTweenFinish(this);
            if (!CallBack("onTweenFinish", new object[] { this }))
                CallBack("OnTweenFinish", new object[] { this });
            return true;
        }
        else
            return false;
    }

好了  大概明白OTTween中的工作機制的了吧  over

OTEasing的類型有:(熟悉緩動效果的肯定比較熟悉)
    Linear (默認的easeType)
    BackIn, BackOut, BackInOut
    BounceIn, BounceOut, BounceInOut
    CircIn, CircOut, CircInOut
    CubicIn CubicOut, CubicInOut
    ElasticIn, ElasticOut, ElasticInOut
    ExpoIn, ExpoOut, ExpoInOut
    QuadIn, QuadOut, QuadInOut
    QuartIn, QuartOut, QuartInOut
    QuintIn, QuintOut, QuintInOut
    SineIn, SineOut, SineInOut
    StrongIn, StrongOut, StrongInOut



發佈了32 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章