NGUI实现滑动翻页效果实例代码

废话不多说了,直接给大家上干货了。

具体代码如下所示:

using UnityEngine;

using System.Collections;

public class PageView : MonoBehaviour

{

const int ITEM_NUM = 2; //总页数

const int PAGE_WIDTH = 2048; //页宽

const float DRAG_SPEED = 0.5f; //翻页时间

const int DRAG_OFFECT = 30; //滑动的起点和终点的差需大于这个数才能触发翻页效果

float beganX = 0;

float beganY = 0; //鼠标按下的坐标

int curIndex = 1; //当前页数,默认为第一页

bool isPlay = false; //是否正在翻页

bool isPress = false; //鼠标是否按下

bool isPageFoot = false; //当前是否处于页尾

bool isHomePage = true; //当前是否处于首页

string left = "left"; //左滑动画的name

string right = "right"; //右滑动画的name

GameObject[] Item_Objects;

// Use this for initialization

void Start ()

{

this.Init ();

}

void Init()

{

Item_Objects = new GameObject[ITEM_NUM];

for(int i = 1; i <= ITEM_NUM; ++i)

{

Transform trans = this.transform.FindChild("item" + i);

if(trans)

{

GameObject spr = trans.transform.FindChild("Background").gameObject;

spr.AddComponent<UIEventListener>();

UIEventListener.Get(spr.gameObject).onPress = OnPressEvent;

}

Item_Objects[i - 1] = trans.gameObject;

}

}

//鼠标按下事件监听

void OnPressEvent(GameObject obj,bool isDown)

{

float endX;

float endY;

if (isDown)

{

beganX = UICamera.lastTouchPosition.x;

beganY = UICamera.lastTouchPosition.y;

isPress = true;

} else

{

endX = UICamera.lastTouchPosition.x;

endY = UICamera.lastTouchPosition.y;

if (isPress)

{

if(isPlay == false)

{

if(endX - beganX > DRAG_OFFECT)

{

if(isHomePage == false)

{

RightDrag();

}

}else if(endX - beganX < DRAG_OFFECT){

if(isPageFoot == false)

{

LeftDrag();

}

}

}

}

isPress = false;

}

}

//向左滑

void LeftDrag()

{

isPlay = true;

float x = this.transform.localPosition.x - PAGE_WIDTH;

TweenPosition leftTween = TweenPosition.Begin (this.gameObject,DRAG_SPEED,new Vector3(x,0,0));

leftTween.method = UITweener.Method.EaseInOut;

leftTween.callWhenFinished = "callback";

leftTween.name = left;

leftTween.Reset ();

}

//向右滑

void RightDrag()

{

isPlay = true;

float x = this.transform.localPosition.x + PAGE_WIDTH;

TweenPosition rightTween = TweenPosition.Begin (this.gameObject,DRAG_SPEED,new Vector3(x,0,0));

rightTween.method = UITweener.Method.EaseInOut;

rightTween.callWhenFinished = "callback";

rightTween.name = right;

rightTween.Reset ();

}

//动画结束的回调函数

void callback(UITweener tween)

{

isPlay = false;

if (tween.name == left)

{

curIndex ++;

} else if (tween.name == right)

{

curIndex --;

}

if (curIndex == 1)

{

isHomePage = true;

}else

{

isHomePage = false;

}

if(curIndex == ITEM_NUM){

isPageFoot = true;

}else

{

isPageFoot = false;

}

}

}

代码到此结束了,如果大家对代码有疑问欢迎给我留言,小编会及时和大家取得联系的。同时也非常感谢大家对网站的支持!

以上是 NGUI实现滑动翻页效果实例代码 的全部内容, 来源链接: utcz.com/z/314800.html

回到顶部