tableview作为一种UI是非常实用的,它可以显示多列元素,并且可以通过滑动来即时加载元素,常用的就是游戏中的物品栏,物品栏在各类游戏中都占有很重要的地位,卡牌游戏中卡牌的整理,RPG中的物品栏等,这些都需要滑动换页,元素点击的要素,而tableview在功能上能够完美的实现这个,接下来以实际的卡牌的整理界面来介绍tableview
一,要使用tableview首先需要继承cocos2dx中tableviewdatasource和TableViewDelegate两个类,并重载其中的四个方法
virtual TableViewCell* tableCellAtIndex(TableView *table,ssize_t idx);
//返回单元格个数,指的是行数,不是指行内总元素的个数
virtual ssize_t numberOfCellsInTableView(TableView *table);
//根据index设置单元格大小,同样指每行的size
virtual Size tableCellSizeForIndex(TableView *tabe,ssize_t idx);
//cell中的元素显示,即每行中要显示的元素都是在这个函数中完成载入的
virtual void tableCellTouched(TableView *table ,TableViewCell *cell);
//cell的点击事件,即每行的点击事件
四个方法的重载如下:
//这里需要使用dequeuecell来获得cell,如果直接在内部创建cell会导致cell被重复创建,元素的显示会变异常,需要注意仅在获得的cell为空的前提下才创建cell,否则只需改变
原有cell中的元素即可,
TableViewCell* CardSelectScene::tableCellAtIndex(TableView *table,ssize_t idx){
TableViewCell *cell=table->dequeueCell();
auto barray=Array::create();
int index=idx*3;
int indexfor=0;
int length=0;
if(table->getTag()==0){
barray=array;
}else if(table->getTag()==1){
barray=sarray;
}
if(barray!=NULL){
if(barray->count()-index