[AS3]as3数组元素如何实现分页功能代码示例(2)
实现分页的类 packagepages { publicclassPageManager { privatevaritems:Array; //当前索引 privatevar _index:int = 0 ; publicfunctionPageManager() { this.items = new Array; _index = 0 ; } /** *当前页索引
实现分页的类
- package pages
- {
- public class PageManager
- {
- private var items:Array;
- //当前索引
- private var _index:int=0;
- public function PageManager()
- {
- this.items=new Array;
- _index=0;
- }
- /**
- *当前页索引
- * @return
- *
- */
- public function get index():int
- {
- return current.index;
- }
- /**
- *对数组执行分页
- * @param items
- * @param pagePerSize 每页大小
- * @return 分页后的第一页
- *
- */
- public function page(items:Array, pagePerSize:int=6):Page
- {
- var page:Page=null;
- if (items != null && items.length > 0 && pagePerSize > 0)
- {
- if (pagePerSize < items.length)
- {
- //最后一页的数目
- var left:int=items.length % pagePerSize;
- var pageCount:int=(items.length - left) / pagePerSize;
- for (var i:int=0; i < pageCount; i++)
- {
- page=new Page();
- //每页的容量
- page.capacity=pagePerSize;
- for (var j:int=0; j < pagePerSize; j++)
- {
- page.add(items[i * pagePerSize + j]);
- }
- //页索引(从0开始)
- page.index=i;
- this.items.push(page);
- }
- //最后一页
- if (left > 0)
- {
- page=new Page();
- page.capacity=pagePerSize;
- page.index=pageCount;
- for (i=items.length - left; i < items.length; i++)
- {
- page.add(items[i]);
- }
- this.items.push(page);
- }
- if (this.items.length > 0)
- {
- page=this.items[0] as Page;
- }
- }
- else
- {
- //所有元素当做一页
- page=new Page();
- page.capacity=items.length;
- page.index=0;
- for (var t:int=0; t < items.length; t++)
- {
- page.add(items[t]);
- }
- this.items.push(page);
- }
- }
- return page;
- }
- public function next():Page
- {
- var page:Page=null;
- if (hasNext())
- {
- _index++;
- page=items[_index] as Page;
- }
- return page;
- }
- public function previous():Page
- {
- var page:Page=null;
- if (hasPrevious())
- {
- _index--;
- page=items[_index] as Page;
- }
- return page;
- }
- public function hasNext():Boolean
- {
- var idx:int=_index;
- return (idx + 1) in items;
- }
- public function hasPrevious():Boolean
- {
- var idx:int=_index;
- return (idx - 1) in items;
- }
- /**
- * 页数
- * @return
- *
- */
- public function get count():int
- {
- return items.length;
- }
- /**
- *获取指定页
- * @param index
- * @return
- *
- */
- public function getPageAt(index:int):Page
- {
- var obj:Page=null;
- if (index in items)
- {
- obj=items[index] as Page;
- }
- return obj;
- }
- /**
- *当前页
- * @return
- *
- */
- public function get current():Page
- {
- var page:Page=null;
- if (_index in items)
- {
- page=items[_index] as Page;
- }
- return page;
- }
- /**
- *字符串描述
- * @return
- *
- */
- public function toString():String
- {
- return items.toString();
- }
- }
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...