zoukankan      html  css  js  c++  java
  • NGUI通过点击按钮来移动面板位置,实现翻页功能

    1.首先看一下NGUI自己封装的的SpringPanel,代码如下:

    [RequireComponent(typeof(UIPanel))]
    [AddComponentMenu("NGUI/Internal/Spring Panel")]
    public class SpringPanel : MonoBehaviour
    {
    public Vector3 target = Vector3.zero;
    public float strength = 10f;

    public delegate void OnFinished ();
    public OnFinished onFinished;

    UIPanel mPanel;
    Transform mTrans;
    float mThreshold = 0f;
    UIScrollView mDrag;

    /// <summary>
    /// Cache the transform.
    /// </summary>

    void Start ()
    {
    mPanel = GetComponent<UIPanel>();
    mDrag = GetComponent<UIScrollView>();
    mTrans = transform;
    }

    /// <summary>
    /// Advance toward the target position.
    /// </summary>

    void Update ()
    {
    AdvanceTowardsPosition();
    }

    /// <summary>
    /// Advance toward the target position.
    /// </summary>

    protected virtual void AdvanceTowardsPosition()
    {
    float delta = RealTime.deltaTime;

    if (mThreshold == 0f)
    {
    mThreshold = (target - mTrans.localPosition).magnitude * 0.005f;
    mThreshold = Mathf.Max(mThreshold, 0.00001f);
    }

    bool trigger = false;
    Vector3 before = mTrans.localPosition;
    Vector3 after = NGUIMath.SpringLerp(mTrans.localPosition, target, strength, delta);

    if (mThreshold >= Vector3.Magnitude(after - target))
    {
    after = target;
    enabled = false;
    trigger = true;
    }
    mTrans.localPosition = after;

    Vector3 offset = after - before;
    Vector2 cr = mPanel.clipOffset;
    cr.x -= offset.x;
    cr.y -= offset.y;
    mPanel.clipOffset = cr;

    if (mDrag != null) mDrag.UpdateScrollbars(false);
    if (trigger && onFinished != null) onFinished();
    }

    /// <summary>
    /// Start the tweening process.
    /// </summary>

    static public SpringPanel Begin (GameObject go, Vector3 pos, float strength)
    {
    SpringPanel sp = go.GetComponent<SpringPanel>();
    if (sp == null) sp = go.AddComponent<SpringPanel>();
    sp.target = pos;
    sp.strength = strength;
    sp.onFinished = null;
    sp.mThreshold = 0f;
    sp.enabled = true;
    return sp;
    }
    }

    2.接着我们直接就可以用如下代码来实现翻页效果,前提是你要知道每一页滚动之后的scroll位置值,此时每一个item不用添加box,以及drag scroll view,都不用添加,因为我们是为了实现点击翻页,而不是拖拽

      SpringPanel.Begin(m_ScrollView.gameObject, m_ScrollViewTrans[1], 8f);第一个参数为你挂在scrollview的物体,第二个参数为你要移动到的目标位置,第三个参数为移动的速度,

  • 相关阅读:
    #转 并查集详解
    美素数
    Wireless Network
    寒假CF- WA了不要怕!
    寒假CF1 小呀小苹果儿
    (专题赛)A Bug's Life
    (周三赛)The Hardest Problem Ever
    (周三赛)A==B?
    (周三赛)还是畅通工程
    cursor改变鼠标样式
  • 原文地址:https://www.cnblogs.com/xwwFrank/p/6026866.html
Copyright © 2011-2022 走看看