!在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; };
#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