首页 > 代码库 > 1CCTableView的使用,TableView响应和小格子tableView实现
1CCTableView的使用,TableView响应和小格子tableView实现
1 CCTableView的使用
T26TableView.h |
#ifndef __T26TableView_H__ #define __T26TableView_H__
#include "cocos2d.h" #include "cocos-ext.h" #include "TBack.h" USING_NS_CC; USING_NS_CC_EXT;
class T26TableView :public TBack, public CCTableViewDataSource { public: CREATE_FUNC(T26TableView); bool init(); static CCScene * scene();
CCArray* _cells;
//获取指定的CCTableViewCell virtual CCTableViewCell* tableCellAtIndex(CCTableView *table,unsignedint idx) { return (CCTableViewCell*)_cells->objectAtIndex(idx); }
//获取CCTableViewCell的个数 virtual unsigned int numberOfCellsInTableView(CCTableView *table) { return _cells->count(); }
//获得Cell的大小 virtual CCSize tableCellSizeForIndex(CCTableView *table,unsignedint idx) { return cellSizeForTable(table); }
virtual CCSize cellSizeForTable(CCTableView *table) { return CCDirector::sharedDirector()->getWinSize(); }
};
#endif |
T26TableView.cpp |
#include "T26TableView.h"
CCScene *T26TableView::scene() { CCScene * scene = CCScene::create(); T26TableView * layer = T26TableView::create(); scene->addChild(layer); return scene; }
bool T26TableView::init() { TBack::init();
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
_cells = CCArray::create(); _cells->retain(); for (inti = 0;i < 5; ++i) { //创举CCTableViewCell CCTableViewCell*cell =new CCTableViewCell; //放入存储CCTableViewCell的CCArray中去 _cells->addObject(cell); cell->release();
//每个格子中添加精灵 CCSprite* sprite = CCSprite::create("HelloWorld.png"); cell->addChild(sprite); sprite->setPosition(ccp(winSize.width / 2,winSize.height / 2)); }
//使用了回调 CCTableView* view = CCTableView::create(this,winSize); addChild(view); //设置滚动的方向 view->setDirection(kCCScrollViewDirectionHorizontal); //从数据源重新加载,视图将会被刷新 view->reloadData();
return true; } |
运行结果: |
2 TableView响应和小格子tableView实现
T26TableView.h |
#ifndef __T26TableView_H__ #define __T26TableView_H__
#include "cocos2d.h" #include "cocos-ext.h" #include "TBack.h" USING_NS_CC; USING_NS_CC_EXT;
class T26TableView :public TBack, public CCTableViewDataSource, public CCTableViewDelegate { public: CREATE_FUNC(T26TableView); bool init(); static CCScene * scene();
//数据源支持的虚函数 CCArray* _cells;
//获取指定的CCTableViewCell virtual CCTableViewCell* tableCellAtIndex(CCTableView *table,unsignedint idx) { return (CCTableViewCell*)_cells->objectAtIndex(idx); }
//获取CCTableViewCell的个数 virtual unsigned int numberOfCellsInTableView(CCTableView *table) { return _cells->count(); }
//获得Cell的大小,cctableView的某个格子的大小可以不一样 virtual CCSize tableCellSizeForIndex(CCTableView *table,unsignedint idx) { CCLog("顺序是:idx = %d",idx);
//当时第3个格子的时候相对其它的格子的空间大一下 if (idx == 2) { return CCSize(80, 57); }
return cellSizeForTable(table); }
virtual CCSize cellSizeForTable(CCTableView *table) { return CCSize(57, 57); }
//点击代理函数 virtual void tableCellTouched(CCTableView*table,CCTableViewCell*cell) { CCLog("idx=%d",cell->getIdx()); } virtual void scrollViewDidScroll(CCScrollView*view){} virtual void scrollViewDidZoom(CCScrollView*view){} };
#endif |
T26TableView.cpp |
#include "T26TableView.h"
CCScene *T26TableView::scene() { CCScene * scene = CCScene::create(); T26TableView * layer = T26TableView::create(); scene->addChild(layer); return scene; }
bool T26TableView::init() { TBack::init();
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); CCSize cellSize = CCSize(57, 57);
_cells = CCArray::create(); _cells->retain(); for (inti = 0;i < 5; ++i) { //创举CCTableViewCell CCTableViewCell*cell =new CCTableViewCell; //放入存储CCTableViewCell的CCArray中去 _cells->addObject(cell); cell->release();
//每个格子中添加精灵 CCSprite* sprite = CCSprite::create("Icon.png"); cell->addChild(sprite); sprite->setPosition(ccp(cellSize.width / 2,cellSize.height / 2)); }
//使用了回调 CCTableView* view = CCTableView::create(this,CCSize(cellSize.width * 3,cellSize.height)); addChild(view); //设置滚动的方向 view->setDirection(kCCScrollViewDirectionHorizontal); //从数据源重新加载,视图将会被刷新 view->reloadData(); view->setPosition(ccp(200, 200));
// 点击处理 view->setDelegate(this);
return true; } |
运行结果: |
|
1CCTableView的使用,TableView响应和小格子tableView实现