好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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 ;

}

}

}

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

dy("nrwz");

查看更多关于NGUI实现滑动翻页效果实例代码的详细内容...

  阅读:41次