Cocos2dx中实现分页效果

来源:互联网 发布:小米3移动版破解4g网络 编辑:程序博客网 时间:2024/06/02 09:57

游戏中实现分页还是很有必要的,无论是背包/商店还是其他一些有列表显示的模块,因为实现分页会给手机减轻不少压力。在这里我先说明,我实现的分页是数据已经全部加载完成了的, 而其分页的作用也就是减轻GPU的压力。(当然,要想将数据也和显示一一对应的话,也是不难实现的,得看情况和项目需求)

我的思路是这样的,既然已经加载了所有分页的数据,那么按显示进行分开的话,所以在每一页的初始元素在整个列表数据的位置以及末尾元素在整个列表的位置 都是有规律地进行变化的。那么,我首先进行的任务的就是根据当前页数去计算该页进行显示的列表的首元素以及末元素在整个数据集的位置了。

在这里我先介绍一下我的页面数字展示是这样定义的:

1
2
//保存每个listview对应的页码:当前页码和最大页码 
int m_pageStarts[2];
而数据是已经加载进view里面(看需求,一般这种加载大数据操作是在登录时完成的)的了:
1
2
//第一个int为place(从0开始) 
std::map< int, xxx >  m_datas;

返回当页加载的元素个数(这里定义了一个成员变量是当前页面首元素的place):

1
2
3
4
5
6
7
8
9
10
11
int startPlace = 0; 
   
int xxx::repeateNum() 
       int startData = m_pageStarts[0] * DATA_IN_ONE_PAGE;       //第一页为0×8=0,第二页为1×8=1 
       int endData = (m_pageStarts[0]+1 == m_pageStarts[1] || m_pageStarts[1] == 0)  
              ? m_datas.size() : (m_pageStarts[0]+1)  * DATA_IN_ONE_PAGE; 
         
       startPlace = startData; 
       returnendData - startData; 
}

0 0
原创粉丝点击