使用场景
很多同学觉得没有使用场景,这边列一个使用场景出来。
原型解释
- 这个是一个游戏任务的原型
-
P1是横向的PageView有多种任务使用P1进行任务类型切换 -
L2是纵向的ScrollView,列出了多个条目 -
L3是横向的ScrollView,列出了多个物品奖励,奖励图标可点击看物品详情 -
去完成是一个按钮,点击后可以跳到相关的游戏玩法中
操作需求
- 按住
去完成,上下滑则取消按钮点击状态,同时L2能上下滑; - 按住
去完成,左右滑则取消按钮点击状态,同时P1能左右滑; - 按住
L3中的奖励图标,左右滑则取消按钮图标状态,同时L3能左右滑; - 按住
L3中的奖励图标,上下滑则取消按钮图标状态,同时L2能上下滑;
滑动限制
-
P1,L2,L3,同时只有一个能滑动 -
L2上下滑动时,左右滑不能触发P1的左右滑 -
L3左右滑时,P1不能左右滑,且L2不能上下滑
目前的问题
以上的需求在目前 Creator 的ScrollView及PageView中是不能实现的,除非自己去用Mask+Touch完全自己重写一套操作
实现想法
- Touch 行为,增加增加一个 CannelOnTouchMove的属性 (在按下后,触摸点移动超过一定距离,取消点击事件)
- 可用于列表或是可滑动组件内部的按钮使用,例如
去完成按钮,及奖励图标的实现
- 可用于列表或是可滑动组件内部的按钮使用,例如
- ScrollView 需要去掉 CancelInnerTouchEvent 的实现,事件自内而外
- ScrollView 需要增加一个属性:滑动与方向一致时才触发;只在组件设置了方向时才生效
- 多级 ScrollView 向外传递Touch事件时,需要增加限制
- 子ScrollView在TouchBegan里,如果外层ScrollView方向不一样,则向上传递
- 子ScrollView在TouchBegan里,如果外层ScrollView方向一样,则阻止向上传递
- 根据这个规则,ScrollView的TouchBegan,最多向外传递一次给外层ScrollView
想讨论下实际可行的方案
