一个ScrollView页面允许上下滑动,在这个页面内部有多个小的ScrollView需要左右滑动,此时玩家如何决定是上下滑动还是左右滑动?

代码逻辑如下

1、初始版:将手指的左右移动放到内部,上下移动放到外部

using UnityEngine.EventSystems;
using UnityEngine.UI;namespace Wogame
{public class ScrollRectExpand : ScrollRect{private ScrollRect ScrollRect;public void Init(ScrollRect mScrollRect){ScrollRect = mScrollRect;}public override void OnBeginDrag(PointerEventData eventData){base.OnBeginDrag(eventData);if (ScrollRect != null) {ScrollRect.OnBeginDrag(eventData);}            }public override void OnEndDrag(PointerEventData eventData){base.OnEndDrag(eventData);if (ScrollRect != null){ScrollRect.OnEndDrag(eventData);}}public override void OnDrag(PointerEventData eventData){base.OnDrag(eventData);if (ScrollRect != null){ScrollRect.OnDrag(eventData);}}}
}

2、复杂版,通过手指的按下第一个点和滑动确定的第二个点,计算出玩家的上下和左右偏移量,比较两个偏移量的值,如果x > y,那么代表玩家想要左右滑动,后面玩家无论怎么滑动,都只会把内部的ScrollView左右滑动,如果x < y,那么代表玩家想要上下滑动,后面玩家无论怎么滑动,都只会把外部的ScrollView上下滑动,注意,一旦玩家抬起手指,本次滑动效果即失效,下次按下将会重新确定方向

using System;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;namespace Wogame
{public class ScrollRectExpand1 : ScrollRect{private ScrollRect ScrollRect;private Vector2 StartPos;       //记录按下的初始状态private int CurrStatus = 0;     //当前滑动状态,1:内部滑动,2:外部滑动public void Init(ScrollRect mScrollRect){ScrollRect = mScrollRect;CurrStatus = 0;}public override void OnBeginDrag(PointerEventData eventData){base.OnBeginDrag(eventData);            if (ScrollRect != null) {ScrollRect.OnBeginDrag(eventData);}StartPos = eventData.position;}public override void OnDrag(PointerEventData eventData){            if (CurrStatus == 0){if (Math.Abs(eventData.position.x - StartPos.x) > Math.Abs(eventData.position.y - StartPos.y)){CurrStatus = 1;}else if(Math.Abs(eventData.position.x - StartPos.x) < Math.Abs(eventData.position.y - StartPos.y)){CurrStatus = 2;}}if (CurrStatus == 1){base.OnDrag(eventData);}else{if (ScrollRect != null){ScrollRect.OnDrag(eventData);}}            }public override void OnEndDrag(PointerEventData eventData){CurrStatus = 0;if (CurrStatus == 1){base.OnEndDrag(eventData);}else{if (ScrollRect != null){ScrollRect.OnEndDrag(eventData);}}            }}
}

ScrollView小拓展相关推荐

  1. scroll-view——小程序横向滚动

    这是官方给的布局代码 <view class="section"><view class="section__title">vertic ...

  2. 微信小程序 scroll-view 中使用flex布局

    scroll-view 小程序中为了可滚动视图区域要得使用scroll-view,但scroll-view有致命的缺陷,就是不支持flex布局.但我们可以通过使用view来包裹scroll-view的 ...

  3. 微信小程序项目,实现图书搜索组件完善

    完成了历史搜索和热门搜索之后,需要对用户输入的图书进行服务器的查询: 首先在search.js中定义一个函数,返回一个promise对象,用户获取用户查询出来的图书 用户除了自己输入以外,也可能通过点 ...

  4. 微信小程序常用视图容器组件

    微信小程序常用视图容器组件 1.组件概述 2.常用的试图容器组件 2.1 view 2.1.1 案例 2.2 scroll-view 2.2.1 案例 2.3 swiper 2.3.1 案例 1.组件 ...

  5. 《微信小程序案例5》仿小米Lite小程序分类板块-两个纵向滚动区域独立互不影响

    一.小米Lite分类板块图 二.技术分解 1.布局是分为左右两个纵向滚动区域,使用   <scroll-view> 2.每个小菜单的如图片 标题等内容使用js里面的data来保存 3.如此 ...

  6. 微信小程序联盟:官方文档+精品教程+demo集合(未完待续,持续更新中……)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  7. Unity插件-OSA(Optimized ScrollView Adapter)

    效果展示 介绍 在设备上通过列表.网格或表格有效地显示大量数据!通常我们在unity中使用UGUI自带的ScrollView,小量的元素显示是没问题的,但是量级一旦太大,ScrolView就会很卡.这 ...

  8. 微信小程序上下滚动的方法

    1.不使用scroll-view组件 1.查看自己代码中page的属性 如果你的page样式中含有overflow属性,且属性值为hidden,将其去掉,若去不掉则加入下代码: page {overf ...

  9. 微信小程序联盟:官方文档+精品教程+demo集合(5月31日更新,持续更新中……)...

    2019独角兽企业重金招聘Python工程师标准>>> 微信小程序联盟 1:官方工具: https://mp.weixin.qq.com/debug/w ... tml?t=1476 ...

最新文章

  1. 数据库备份到文件服务器,数据库文件备份到云服务器上
  2. 3 个重要因素,带你看透 AI 技术架构方案的可行性
  3. 肢解“文件夹图标”病毒,制作专杀工具——“郑大扫帚”
  4. crypt错误分析和解决
  5. C++ 笔记 2 (C++ primer)
  6. UNITY 手游(安卓)如何使用C/C++代码
  7. 4.帧循环(游戏主循环),schedule
  8. docker二进制代码编译
  9. unity 里调试native code
  10. C++:12---运算符重载
  11. 双非同学,自学编程,毕业一年逆袭百度!
  12. 实现类似于百度的自动补全搜索
  13. phpcms调用语句
  14. /proc/sys目录下文件的查看方法
  15. 算法中的最优化方法_学习目录
  16. JavaScript函数重载(js函数重载)
  17. java7 3dm下载_我的世界 1.7.10最新forge极简整合包
  18. JavaScript零基础入门 11:JavaScript实现图片上传并预览
  19. 基于ttcrpy的跨孔CT高斯牛顿算法及python代码分享(2)
  20. 计算机常用英语词汇一览表,计算机常用英语词汇总表

热门文章

  1. Android studio断点调试
  2. 其实华为手机还是个扫描仪,点击这个按钮,纸质文档一键电子化
  3. Java学习 --- 类方法(静态方法)
  4. 使用element的表格,el-table-column中使用slot加v-if出现的渲染混乱失效
  5. python 常用函数库
  6. 云和恩墨2018恭贺新春!
  7. powershell反弹shell
  8. ssh项目(包裹柜):换了另一台服务器上的数据库之后与数据库建立不了连接
  9. 再谈进程—从入门到出家
  10. PHP日志库 - Monolog 知识整理