分页是游戏和应用程序开发中经常需要用到的一个程序,
在游戏开发中我用得最多的算是数组(ArrayPages)分页和哈希表(HashMapPages)分页。
比如《抢车位》游戏中的“场景店”模块、《QQ农场》中的好友列表、常见新闻列表分页等等。
下面我提供之前写的ArrayPages.as ,哈希表的分页就类似。
AS3代码
- package com.lbynet.util
- {
-
-
-
-
-
-
-
- public class ArrayPages
- {
-
- private var data_array:Array;
- private var pageRecord:int;
-
- private var arrayLength:int;
- public var totalPages:int;
- public function ArrayPages(_data:Array, _pagerecord:int = 4)
- {
- if (_data != null)
- {
- this.data_array = _data;
- this.pageRecord = _pagerecord;
- this.arrayLength = this.data_array.length;
- this.totalPages = this.arrayLength / this.pageRecord;
- if (this.arrayLength % this.pageRecord > 0)
- {
- this.totalPages += 1;
- }
- }
-
-
-
-
-
- }
-
-
- public function getPageData(curpage:uint):Array
- {
-
- if (curpage <= 0||curpage > this.totalPages)
- {
- throw new Error('页数必需在 1 - ' + this.totalPages + ' 页 以内');
- }
-
- var _startIndex:int;
- if (curpage == 1)
- {
- _startIndex = 0;
- }
- else
- {
- _startIndex = (curpage - 1) * pageRecord;
- }
-
- var _endIndex:int = _startIndex + pageRecord;
- if (curpage >= this.totalPages && _endIndex != this.arrayLength)
- {
- _endIndex = _startIndex + this.arrayLength % this.pageRecord;
- }
-
-
- return data_array.slice(_startIndex, _endIndex);
- }
-
- }
-
- }
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。