自定义滑动列表
需求描述: 游戏中物品展示会存在自由滑动与吸附的需求, 并且在点击时需要吸附到固定位置,此外列表中的item可能需要绑定各种复杂的事件,吸附的流程非常影响体验,而内置的列表控件不支持吸附操作,不方便添加停滞后的事件触发, 难以在滑动的过程中改变每个item的外观表现。
实现方式: 实现自定义列表控件, 之前实现过相关的自定义列表控件, 具有基本吸附功能, 但是不支持item点击事件,也不支持item惯性滑动与回弹, 并没有实现内置列表的所有功能, 本次在物品展示界面需要通过滑动与吸附的方式以影片交卷的形式展示,要求具有滑动吸附, 定位切换,启动与停滞事件响应,加上本身item点击响应与长按提示逻辑,整个逻辑较为复杂,因此需要对之前自定义滑动列表进行迭代。
自定义列表实际是给定一个Node节点通过向Node节点添加子节点添加item, 通过给item 添加touch事件驱动列表的移动,通过ui的tick驱动吸附与惯性的滑动。
图1 自定义列表的功能组成
列表的行为表现,通过状态机进行管理与实现,在不同状态下定义不同速度衰减模式与表现,暂时将状态分拖拽、点击移动、自动吸附、惯性滑动、边界回弹、停止,有状态机负责不同状态的切换。
列表Item事件响应,内置监听事件o