unity3d ngui-TweenRotation-TweenPosition-TweenScale

using UnityEngine;
using System.Collections;

public class TweenFlipCARDS : MonoBehaviour
{
    private float mfTime = 1.0f;
    public GameObject positive;//牌正面
    public GameObject reverse;//牌背面
    private TweenRotation mPositiveTween;
    private TweenRotation mReverseTween;
    /// <summary> 半圈时间 </summary>
    public float duration = 1;

   void Start()
    {
        mPositiveTween = positive.GetComponent<TweenRotation>();
        if (mPositiveTween == null) mPositiveTween = positive.AddComponent<TweenRotation>();

        mReverseTween = reverse.GetComponent<TweenRotation>();
        if (mReverseTween == null) mReverseTween = reverse.AddComponent<TweenRotation>();
        mPositiveTween.enabled = false;
        mReverseTween.enabled = false;
        reverse.gameObject.transform.localEulerAngles = new Vector3(0, 90, 0);

        //mPositiveTween.onFinished.Add(new EventDelegate(PositiveEventDelegate));
        //mReverseTween.onFinished.Add(new EventDelegate(ReverseEventDelegate));
        //mPositiveTween.callWhenFinished = "PositiveEventDelegate";
        //mReverseTween.callWhenFinished = "ReverseEventDelegate";
       // a是正面。b是反面。 分为4个时间段 1.  a 从0转到90 。b精巧。2.a精巧。b 从90-0. 3.a精巧,b0-90. 4.a从90-0,b精巧。
        StartCoroutine(waitShowReverseTime(mfTime));//显示一定的时间后再翻牌
       
    }
   IEnumerator waitShowReverseTime(float time)
    {
        yield return new WaitForSeconds(time);
        mPositiveTween.from = Vector3.zero;
        mPositiveTween.to = new Vector3(0, 90, 0);
        mPositiveTween.duration = duration;

        mReverseTween.from = new Vector3(0, 90, 0);
        mReverseTween.to = Vector3.zero;
        mReverseTween.duration = duration;

        UIEventListener listener = UIEventListener.Get(positive.gameObject);
        listener.onClick = ClickUIButton;
        listener = UIEventListener.Get(reverse.gameObject);
        listener.onClick = ClickUIButton;

        mPositiveTween.onFinished = PositiveEventDelegate;
        mReverseTween.onFinished = ReverseEventDelegate;

        ClickUIButton(positive);

    }
    GameObject mNowDown;
    void ClickUIButton(GameObject click)
    {
        mNowDown = click;
        if (click == positive)
        {
            PlayPositive();
             
        }
        else if (click == reverse)
        {
            PlayReverse();   
        }
    }
    /// <summary>
    /// 翻牌
    /// </summary>
    public void PlayPositive()
    {
        mPositiveTween.Play(true);
    }
    /// <summary>
    /// 复位
    /// </summary>
    public void PlayReverse()
    {
        mReverseTween.Play(false);
    }
    /// <summary>
    /// 翻牌回调
    /// </summary>
    public void PositiveEventDelegate(UITweener tween)
    {
        if (mNowDown == mPositiveTween.gameObject) mReverseTween.Play(true);
    }
    /// <summary>
    /// 复位回调
    /// </summary>
    public void ReverseEventDelegate(UITweener tween)
    {
        if (mNowDown == mReverseTween.gameObject) mPositiveTween.Play(false);
    }
}上述代码均来自http://www.xiaobao1993.com/486.html


TweenScale同理,是控制其大小的,可用事实上现闪烁冒泡提示效果,如信息的提示;TweenPosition可实现方向指引效果,如新手引导箭头指引
新手引导:为新手引导新建立一个UI窗体。里面包括一个半透明蒙版UISprite(全屏,用来挡住全部的UI)。箭头UISprite(加上述的TweePosition控制其上下或者左右指引,箭头位置可动态调整),而后再动态复制Clone一份要引导的UI在此窗体下并改变其Z层级显示在最上面,这样就实现了一个要引导的UI的突出效果

posted @ 2016-01-16 13:59  zfyouxi  阅读(677)  评论(0编辑  收藏  举报