分页的控件已经不是什么稀奇的东西,最近又重新开放了一次,所以拿出来分享。

richmediaplus.controls.Pager 基于 Box 开发而成,用 Box 的好处除了省去排版的心思之外,可以利用 Box.direction 进行一些好玩的处理方式,因此 Pager 会根据 direction 进行横排或者竖排的样式。

整个分页系统由 richmediaplus.controls.Pager 和 richmediaplus.controls.pagerClasses.PagerItem 组成。Pager 掌握着整个分页的规则和设计,PagerItem 为『页』元素,但不包括前一页,后一页,最前页,最后页。整个开发习惯是为了配合由 『总页数』 count 和 当前『第 N 页』 currentPageIndex 的数据 组合成的数据,进行相应的处理。一般情况下,只需设置『总页数』 Pager.count 就可以使用,对 PagerEvent.PAGE_INDEX_CHANGED 进行监听就可以返回改变后的『页』元素的 pageIndex。当然,你可以自由得直接用 Pager.currentPageIndex 进行『页』元素的选择。

请注意,下面为几种特殊情况:

  • 若 count 或 showCount 为 0 时,Pager 不显示。
  • 若当前 count 为 10 条,当前选择的『页』元素为第 9 页,选择新的『页』元素第 10 页,若后台数据发生改变,count 返回为 8 条,那么选择的新『页』元素 currentPageIndex 越界(不包含小于 0 的情况),那么 Pager 自动会选择 『最后一页』,这种情况下是 DO NOT dispatch PagerEvent.PAGE_INDEX_CHANGED 事件的,这时候需要后台配合,在返回的同时,返回最后一页的数据,这样的话,就不用再去读取『最后一页』的数据了。

richmediaplus.controls.Pager Demo

richmediaplus.controls.Pager Source

richmediaplus.controls.Pager