分页是游戏和应用程序开发中经常需要用到的一个程序,
在游戏开发中我用得最多的算是数组(ArrayPages)分页和哈希表(HashMapPages)分页。
比如《抢车位》游戏中的“场景店”模块、《QQ农场》中的好友列表、常见新闻列表分页等等。

下面我提供之前写的ArrayPages.as ,哈希表的分页就类似。

AS3代码
  1. package com.lbynet.util    
  2. {   
  3.        
  4.     /**  
  5.      * ...  
  6.      * @author lbynet (Tools -> 数组数据分页...)  
  7.      * @version 0.2  
  8.      * @copy shch8.com All Rights Reserved At 2008  
  9.      */  
  10.     public class ArrayPages    
  11.     {   
  12.            
  13.         private var data_array:Array// 存储所有数据   
  14.         private var pageRecord:int;// 每页的数据个数   
  15.            
  16.         private var arrayLength:int;// 总个数   
  17.         public var totalPages:int// 总页数   
  18.         public function ArrayPages(_data:Array, _pagerecord:int = 4)    
  19.         {   
  20.             if (_data != null)   
  21.             {   
  22.                 this.data_array = _data;   
  23.                 this.pageRecord = _pagerecord;   
  24.                 this.arrayLength = this.data_array.length;   
  25.                 this.totalPages = this.arrayLength / this.pageRecord;   
  26.                 if (this.arrayLength % this.pageRecord > 0)   
  27.                 {   
  28.                     this.totalPages += 1;   
  29.                 }   
  30.             }   
  31.                
  32.             //trace(this.data_array);   
  33.             //trace(this.pageRecord);   
  34.             //trace(this.arrayLength);   
  35.             //trace(this.totalPages);   
  36.         }   
  37.            
  38.         /* 取出某一页的数据 (1-totalPages) */  
  39.         public function getPageData(curpage:uint):Array  
  40.         {   
  41.                
  42.             if (curpage <= 0||curpage > this.totalPages)   
  43.             {   
  44.                 throw new Error('页数必需在 1 - ' + this.totalPages + ' 页 以内');   
  45.             }   
  46.                
  47.             var _startIndex:int;// 某页的第一条数据   
  48.             if (curpage == 1)   
  49.             {   
  50.                 _startIndex = 0;   
  51.             }   
  52.             else  
  53.             {   
  54.                 _startIndex = (curpage - 1) * pageRecord;   
  55.             }   
  56.                
  57.             var _endIndex:int = _startIndex + pageRecord; // 某页的最后一条数据   
  58.             if (curpage >= this.totalPages && _endIndex != this.arrayLength)// (_endIndex != this.arrayLength)  === (this.arrayLength % this.pageRecord == 0)   
  59.             {   
  60.                 _endIndex = _startIndex + this.arrayLength % this.pageRecord;   
  61.             }   
  62.                
  63.             //trace('                           ', _startIndex, _endIndex);   
  64.             return data_array.slice(_startIndex, _endIndex);   
  65.         }   
  66.            
  67.     }   
  68.        
  69. }