【Cocos2D-X 】初窥门径(14)CCTableView

!在2.X版本已经没有CCListView了,用CCTableView实现。


直接写

#include "cocos-ext.h" 或 using namespace cocos2d::extension; 会报错,因为没有添加额外的依赖。


添加依赖:

1.右键点击项目->属性->vc++->项目包含目录,将目录extensions包含进去。


2.继续选择,连接器->输入->附加依赖项,添加libExtentions.lib



如果出现:

1>LINK : fatal error LNK1104: 无法打开文件“libExtentions.lib”

重新生成下解决方案即可。



下面看看怎么实现一个CCTableView

.h

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

USING_NS_CC;
using namespace cocos2d::extension; 

class ListLayer : public CCLayer, public CCTableViewDataSource , public CCTableViewDelegate 
{
public :
	ListLayer();
	~ListLayer();
	CREATE_FUNC(ListLayer);
	virtual bool init();
	//触摸事件
	virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);
	//子项的大小
	virtual CCSize cellSizeForTable(CCTableView *table);
	//生成子项的内容
	virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);
	//总共多少项
	virtual unsigned int numberOfCellsInTableView(CCTableView *table);
	virtual void scrollViewDidScroll(CCScrollView* view);
	virtual void scrollViewDidZoom(CCScrollView* view);

private :
	CCSize mSize;
};

.cpp

#include "ListLayer.h"

ListLayer::ListLayer()
{
}

ListLayer::~ListLayer()
{
}

bool ListLayer::init()
{
	if(!CCLayer::init())
	{
		return false;
	}
	mSize=CCDirector::sharedDirector()->getWinSize();

	CCTableView* pTableView = CCTableView::create(this, CCSizeMake(480, 480));
	pTableView->setDirection(kCCScrollViewDirectionVertical);
	pTableView->setPosition(ccp(20 , mSize.height/2 - pTableView->getContentSize().height/2 - 26));
	pTableView->setDelegate(this);
	pTableView->setVerticalFillOrder(kCCTableViewFillTopDown);
	this->addChild(pTableView);
	pTableView->reloadData();

	return true;
}

void ListLayer::tableCellTouched(CCTableView* table, CCTableViewCell* cell)
{
	CCLog("cell touched at index: %i", cell->getIdx());
}

CCSize ListLayer::cellSizeForTable(CCTableView *table)
{
	return CCSizeMake(480, 80);
}

CCTableViewCell* ListLayer::tableCellAtIndex(CCTableView *table, unsigned int idx)
{
	CCString *pString =CCString::createWithFormat("this is cell  %d", idx);
	CCTableViewCell *pCell = table->dequeueCell();
	if (!pCell) 
	{
		pCell = new CCTableViewCell();
		pCell->autorelease();
		CCSprite *pSprite = CCSprite::create("listCellBg.png");
		pSprite->setAnchorPoint(CCPointZero);
		pSprite->setPosition(CCPointZero);
		pCell->addChild(pSprite);

		CCLabelTTF *pLabel = CCLabelTTF::create(pString->getCString(), "Arial", 20.0);
		pLabel->setPosition(CCPointZero);
		pLabel->setAnchorPoint(CCPointZero);
		pLabel->setTag(123);
		pCell->addChild(pLabel);
	}
	else
	{
		CCLabelTTF *pLabel = (CCLabelTTF*)pCell->getChildByTag(123);
		pLabel->setString(pString->getCString());
	}

	return pCell;
}

unsigned int ListLayer::numberOfCellsInTableView(CCTableView *table)
{
	return 10;
}

void ListLayer::scrollViewDidScroll(CCScrollView *view)
{
}

void ListLayer::scrollViewDidZoom(CCScrollView *view)
{
}



效果图:






转载请注明出处:http://blog.csdn.net/Vestigge


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值