【Cocos2D-X 游戏引擎】初窥门径(14)CCTableView

来源:互联网 发布:mac os升级 编辑:程序博客网 时间:2024/04/27 22:53

【Cocos2D-X 游戏引擎】初窥门径(14)CCTableView

分类: Cocos2D-X 2502人阅读 评论(4) 收藏 举报
Cocos2d-x

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

[cpp] view plaincopy
  1. #include "cocos2d.h"  
  2. #include "cocos-ext.h"  
  3.   
  4. USING_NS_CC;  
  5. using namespace cocos2d::extension;   
  6.   
  7. class ListLayer : public CCLayer, public CCTableViewDataSource , public CCTableViewDelegate   
  8. {  
  9. public :  
  10.     ListLayer();  
  11.     ~ListLayer();  
  12.     CREATE_FUNC(ListLayer);  
  13.     virtual bool init();  
  14.     //触摸事件  
  15.     virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);  
  16.     //子项的大小  
  17.     virtual CCSize cellSizeForTable(CCTableView *table);  
  18.     //生成子项的内容  
  19.     virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);  
  20.     //总共多少项  
  21.     virtual unsigned int numberOfCellsInTableView(CCTableView *table);  
  22.     virtual void scrollViewDidScroll(CCScrollView* view);  
  23.     virtual void scrollViewDidZoom(CCScrollView* view);  
  24.   
  25. private :  
  26.     CCSize mSize;  
  27. };  

.cpp

[cpp] view plaincopy
  1. #include "ListLayer.h"  
  2.   
  3. ListLayer::ListLayer()  
  4. {  
  5. }  
  6.   
  7. ListLayer::~ListLayer()  
  8. {  
  9. }  
  10.   
  11. bool ListLayer::init()  
  12. {  
  13.     if(!CCLayer::init())  
  14.     {  
  15.         return false;  
  16.     }  
  17.     mSize=CCDirector::sharedDirector()->getWinSize();  
  18.   
  19.     CCTableView* pTableView = CCTableView::create(this, CCSizeMake(480, 480));  
  20.     pTableView->setDirection(kCCScrollViewDirectionVertical);  
  21.     pTableView->setPosition(ccp(20 , mSize.height/2 - pTableView->getContentSize().height/2 - 26));  
  22.     pTableView->setDelegate(this);  
  23.     pTableView->setVerticalFillOrder(kCCTableViewFillTopDown);  
  24.     this->addChild(pTableView);  
  25.     pTableView->reloadData();  
  26.   
  27.     return true;  
  28. }  
  29.   
  30. void ListLayer::tableCellTouched(CCTableView* table, CCTableViewCell* cell)  
  31. {  
  32.     CCLog("cell touched at index: %i", cell->getIdx());  
  33. }  
  34.   
  35. CCSize ListLayer::cellSizeForTable(CCTableView *table)  
  36. {  
  37.     return CCSizeMake(480, 80);  
  38. }  
  39.   
  40. CCTableViewCell* ListLayer::tableCellAtIndex(CCTableView *table, unsigned int idx)  
  41. {  
  42.     CCString *pString =CCString::createWithFormat("this is cell  %d", idx);  
  43.     CCTableViewCell *pCell = table->dequeueCell();  
  44.     if (!pCell)   
  45.     {  
  46.         pCell = new CCTableViewCell();  
  47.         pCell->autorelease();  
  48.         CCSprite *pSprite = CCSprite::create("listCellBg.png");  
  49.         pSprite->setAnchorPoint(CCPointZero);  
  50.         pSprite->setPosition(CCPointZero);  
  51.         pCell->addChild(pSprite);  
  52.   
  53.         CCLabelTTF *pLabel = CCLabelTTF::create(pString->getCString(), "Arial", 20.0);  
  54.         pLabel->setPosition(CCPointZero);  
  55.         pLabel->setAnchorPoint(CCPointZero);  
  56.         pLabel->setTag(123);  
  57.         pCell->addChild(pLabel);  
  58.     }  
  59.     else  
  60.     {  
  61.         CCLabelTTF *pLabel = (CCLabelTTF*)pCell->getChildByTag(123);  
  62.         pLabel->setString(pString->getCString());  
  63.     }  
  64.   
  65.     return pCell;  
  66. }  
  67.   
  68. unsigned int ListLayer::numberOfCellsInTableView(CCTableView *table)  
  69. {  
  70.     return 10;  
  71. }  
  72.   
  73. void ListLayer::scrollViewDidScroll(CCScrollView *view)  
  74. {  
  75. }  
  76.   
  77. void ListLayer::scrollViewDidZoom(CCScrollView *view)  
  78. {  
  79. }  



效果图:






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

0 0