在游戏中,经常需要用到列表展示,例如我现在做的卡牌游戏中就有卡牌列表好友列表需要用到CCTableView,下面简单介绍一下使用方法。

   CCTableView位于扩展库文件cocos-ext.h中,它是CCScrollView的子类。引擎已经帮我们封装好了,而我们要实现列表展示只需要重写下面4个函数:

	// 处理触摸事件,可以计算点击的是哪个子项
	virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);
	// 定制单元格cell的尺寸
	virtual CCSize cellSizeForTable(CCTableView *table);
	// 生成列表的每一项内容
	virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);
	// cell的数量
	virtual unsigned int numberOfCellsInTableView(CCTableView *table);

由于CCTableView继承自CCScrollView,所以要实现这两个方法,但是什么都不做。

	virtual void scrollViewDidScroll(CCScrollView* view);
	virtual void scrollViewDidZoom(CCScrollView* view);

下面我们来写一个好友列表展示:

FriendListLayer.h

#ifndef __FRIENDLISTLAYER_H__
#define __FRIENDLISTLAYER_H__

#include "cocos2d.h"
#include "cocos-ext.h"

USING_NS_CC;
USING_NS_CC_EXT;

class FriendListLayer : public CCLayer, public CCTableViewDataSource, public CCTableViewDelegate
{
public:
	virtual bool init();

	// CCTableViewDelegate继承自CCScrollViewDelegate
	virtual void scrollViewDidScroll(CCScrollView* view);
	virtual void scrollViewDidZoom(CCScrollView* view);

	// 处理触摸事件,可以计算点击的是哪个子项
	virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);

	// 定制单元格的尺寸
	virtual CCSize cellSizeForTable(CCTableView *table);

	// 生成列表的每一项内容
	virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);

	// cell的数量
	virtual unsigned int numberOfCellsInTableView(CCTableView *table);

        // 返回按钮回调函数
	void menuCallback(CCObject* pSender);

	CREATE_FUNC(FriendListLayer);
};

#endif

FriendListLayer.cpp


另外还可以重写这两个函数实现cell的点击和释放时的响应效果:

// 按下
void FriendListLayer::tableCellHighlight(CCTableView *table, CCTableViewCell *cell)  
{  
	CCTexture2D *aTexture=CCTextureCache::sharedTextureCache()->addImage("cell_selected.png");  
	CCSprite *pSprite=(CCSprite *)cell->getChildByTag(12);  
	pSprite->setTexture(aTexture);  
}  
// 释放
void FriendListLayer::tableCellUnhighlight(CCTableView *table, CCTableViewCell *cell)  
{   
	CCTexture2D *aTexture=CCTextureCache::sharedTextureCache()->addImage("cell_background.png");  
	CCSprite *pSprite=(CCSprite *)cell->getChildByTag(12);  
	pSprite->setTexture(aTexture);  
} 


效果图:

【Cocos2dx游戏开发】CCTableView实现滑动列表


【Cocos2dx游戏开发】CCTableView实现滑动列表


相关文章:

  • 2022-12-23
  • 2021-11-06
  • 2021-08-11
  • 2021-07-01
  • 2021-11-12
  • 2021-11-16
  • 2023-01-04
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-17
  • 2022-12-23
  • 2021-05-23
  • 2022-01-12
相关资源
相似解决方案