php左右滑动翻页代码,C#_NGUI实现滑动翻页效果实例代码,废话不多说了,直接给大家上 - phpStudy...

本文分享了一个使用Unity3D实现的滑动翻页效果实例代码,包括关键函数如OnPressEvent、LeftDrag和RightDrag,以及利用TweenPosition进行动画处理。代码详细解释了如何检测滑动并触发翻页效果,适用于UI界面的交互设计。
摘要由CSDN通过智能技术生成

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.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;

}

}

}

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

Win10 10575预览版正在内部测试中 即将发布

PHP判断是否为空的几个函数对比

详解C++中的一维数组和二维数组

关于Sphinx创建全文检索的索引介绍

JS控制层作圆周运动的方法

SQL语句中SUM与COUNT的区别深入分析

用CSS3的box-reflect设置文字倒影效果的方法讲解

JavaScript 节流函数 Throttle 详解

session在php5.3中的变化 session_is_registered() is deprecated in

MySQL存储引擎简介及MyISAM和InnoDB的区别

php自动给网址加上链接的方法

ORACLE学习笔记-添加更新数据函数篇

C#操作SQLite数据库之读写数据库的方法

如何使用PHP计算上一个月的今天

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值