# UIScrollView 滑动组件
# 概述
UIScrollView 是带有 滚动功能的控制组件
,根据自身以及内容区域的信息,实现控制内容区域滑动的效果。
# 静态属性描述
Movement :UIScrollView具有的滑动方向类型枚举值
// engine.UIScrollView.Movement
enum Movement {
Horizontal,
Vertical
}
# 属性描述
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
movement | Movement | Movement.Vertical | UIScrollView的滑动方向。 |
minContextMove | number | 0 | 相对于滑动起点的,最小滑动距离,若设定,则UIScrollView自动计算最小滑动距离逻辑失效,最小值固定取该值。 |
maxContextMove | number | 0 | 相对于滑动起点的,最大滑动距离,若设定,则UIScrollView自动计算最大滑动距离逻辑失效,最大值固定取该值。 |
moveDistance | number | 0 | 只读属性,相对于滑动起点,正向的已滑动的距离。 |
disableDragIfFits | boolean | true | 内容区域尺寸小于滑动区域(对应Transform2D大小)时,是否禁止滑动。 |
snapToStart | boolean | false | 滑动到顶后(小于minContentMove),是否允许继续滑动 |
snapToEnd | boolean | false | 滑动到底后(大于maxContentMove),是否允许继续滑动 |
autoFix | boolean | false | 是否开启组件根据内容区域大小与滑动区域大小(对应Transform2D大小),将内容区域移动到相对于当前组件的对齐位置,内容区域只会根据UIScrollView第一层子元素大小进行位置适配。 |
cellAlignmentX | number | 0 | 在autoFix情况下,内容区域位于滑动区域(对应Transform2D大小)水平方向的相对位置,取值范围(0-1)。 |
cellAlignmentY | number | 1 | 在autoFix情况下,内容区域位于滑动区域(对应Transform2D大小)垂直方向的相对位置,取值范围(0-1)。 |
# 方法描述
方法 | 参数 | 返回值 | 功能 |
---|---|---|---|
onReachStart | Delegate<this, TouchInputEvent> | 返回UIScrollView到顶行为的Delegate,通过add方法添加事件。 | |
onReachEnd | Delegate<this, TouchInputEvent> | 返回UIScrollView到底行为的Delegate,通过add方法添加事件。 | |
setMinMax | <min: number, max: number> | 设置设定的最大最小滑动距离,若设定则优先使用这两个值。 | |
clearMinMax | 清理设定的最大最小,取消后会恢复使用自动生成最大最小距离逻辑。 | ||
scrollTo | <pos: number> | 组件滑动到,pos对应的滑动距离 | |
refreshMove | 清空当前滑动了的距离,并重新初始化 | ||
enableScroll | 开启UIScrollView滑动 | ||
disableScroll | 暂停UIScrollView滑动 |
# 滑动距离计算
默认情况下,滑动距离是根据,内容区域大小
(一级子节点的最大节点大小)与滑动区域大小
(对应Transform2D大小)的差值
得来,滑动距离的结果会保存于 minContextMove
与 maxContextMove
。
若用户设定了 minContextMove
及 minContextMove
,则会根据用户设定的值进行滑动距离的判断。若需恢复自动判断滑动距离的逻辑,调用组件 clearMinMax
方法即可。
# 内容区域定位
内容区域定位分为:用户定位模式
与 自动定位模式
。
默认情况下,为用户定位模式
,组件会以初始化时的子节点状态作为起始滑动状态。
autoFix
为ture
,为自动定位模式
,组件会根据内容区域信息
(最大子节点大小、锚点)与滑动区域信息
(对应Transform2D大小,锚点)及配置信息
(cellAlignmentX、cellAlignmentY),将内容区域位置调整到相对于滑动区域的对齐位置
。
# 注意
UIScrollView 仅为控制组件。一般情况下需要在同一节点结合:点击控制组件TouchInputComponent
、蒙层组件UIMask
与蒙层组件对应渲染区域的图形组件UIGraphic
,协同使用。
# 使用方法
# 代码使用
// 标准的UIScrollView组件
const scrollViewEntity = game.createEntity2D('UIScrollView');
// 添加ScrollView控制组件
const scrollView = scrollViewEntity.addComponent(engine.UIScrollView);
// 以垂直方向进行滑动控制
scrollView.movement = engine.UIScrollView.MovementType.Vertical;
// 添加触摸组件
const scrollViewTouch = scrollViewEntity.addComponent(engine.TouchInputComponent);
// 添加蒙层组件
const scrollViewMask = scrollViewEntity.addComponent(engine.UIMask);
// 添加蒙层组件需要的 渲染区域
const scrollViewGraphic = scrollViewEntity.addComponent(engine.UIGraphic);
uiRoot.addChild(scrollViewEntity.transform2D);
# 编辑器使用
右键 - UI - 新建ScrillView