!在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