GeneralDataFlipPage : FlipPageComponentManager
通用翻页管理器:对之前数据中摸棱两可的内容进行了补充,确保可以作为一个单独的外部组件使用,而不是要求继承使用。
此组件的主要功能就是单独使用,而不需要继承并定义其中具体函数的作用。
你仍然可以通过定义重写的数据结构来使用翻页管理器的全部功能。
FlipPageComponentManager : XericFlipPageIndexVesselBase
翻页组件管理器:承基础翻页管理器,处理翻页UI组件交互。
提供基础的ui绑定。基于ObjectVessel类型实现。
需要注意的是,ObjectVessel这个类型目的仅仅只是为了确保修改成员类型后,不改变在界面上序列化目标这一个目的而已,其他功能不能保证。
FlipPageComponentManager默认对翻到首页,翻到上一页,翻到下一页,翻到尾页,跳转到命令页,跳转到单选项页这些基本功能进行了绑定。
继承于FlipPageComponentManager的类型可以快速实现对组件的绑定。
单个数据项目继承自ItemComponentInfo可以获得对翻页单选项的引用。
XericFlipPageIndexVesselBase
翻页管理器基类:实现主要的翻页逻辑,事件处理功能。
提供基本的函数事件及其逻辑驱动功能:
-
翻页管理器数据有页面PageInfo和数据项目ItemInfo组成,这些项目基本类型包含基本的生命周期事件,可以实现在页面/数据项目 创建销毁,显示隐藏时的事件调用,希望翻页时产生更多事件,就需要重写这些数据类型。
-
翻页管理器提供翻页所需的基本事件,如上一页,下一页,或是翻到指定页。
翻页的过程是一个遍历的过程,因为页面实际上是一个链表数据结构,这意味着数据的频繁抽取和调换,插入会比较快速。
在翻页时,遍历的过程中会对每一页执行激活OnPageVisible和隐藏OnPageInvisible回调操作,为了便于区分这部分潜在的高性能开销内容,你可以通过函数上的quickVisit标记来判断当前是否为快速翻页过程,如果为真,建议跳过后续的程序执行,避免大量的无用的数据操作发生。
保留这个功能的目的是为了有些情况下可能希望播放一些动画之类的;比如遍历过程中可以通过此事件将翻页内容及特定动画插入到队列中,然后由帧更新事件统一控制播放翻页操作。
- 页面的增加和删除可以手动控制,但更建议通过增加数据项目自动完成;使用
AddItem来增加数据项目,或者使用RemoveItem移除数据项目,在添加或移除的过程中,如果数据项目超出了当前页面的承载范围DefaultItemCountPerPage,那么就会自动调用新建页面,反之会自动回收页面。
增加页面时,可以手动指定如何增加页面,增加在最前面AddPageFirst,增加在最后AddPageLast,一般按正常的阅读习惯,会将数据从前往后增加,页面同理(数据的增加默认增加在末尾)
注意由于所有数据都是直接保存在页面数据中,而不是在外部保存后通过页面映射,这是为了便于单独删除页面设计的,删除页面时也会同时删除页面中的内容。(如何删除数据由页面定义)
数据项目会优先填充末尾为空的页面;如何填充由AddItem函数决定
页面不会保存自己所在的翻页管理器,页面仅在部分生命周期中与翻页管理器产生联系,比如页面创建和销毁时,所以OnPageCreated和OnPageDestroy函数中会自动提供这部分引用。