CCTableView和CCScrollView如创建滚动视图,CCTableView该函数将是更,制造更多麻烦
实例1:使用CCTableView创建滚动视图
首先创建一个TableView类
TableView.h中的代码
#ifndef __TableView_H__
#define __TableView_H__ #include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT; class TableView : public CCLayer, public CCTableViewDataSource, public CCTableViewDelegate
{
public:
virtual bool init(); static CCScene* scene(); CREATE_FUNC(TableView); //创建一个数组
CCArray* _arr; //返回格子的大小
virtual CCSize tableCellSizeForIndex(CCTableView *table, unsigned int idx)
{
return cellSizeForTable(table);
}; //每一个格子的大小
virtual CCSize cellSizeForTable(CCTableView *table)
{
//返回窗体的大小
return CCDirector::sharedDirector()->getWinSize();
} //返回格子的编号
virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx)
{
return (CCTableViewCell*)_arr->objectAtIndex(idx);
} //返回滚动的大小(格子的个数)
virtual unsigned int numberOfCellsInTableView(CCTableView *table)
{
return _arr->count();
} virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell)
{
CCLog("clicked cell is %d", cell->getIdx());
} virtual void scrollViewDidScroll(CCScrollView* view){};
virtual void scrollViewDidZoom(CCScrollView* view){};
}; #endif // __TableView_H__
TableView.cpp中的代码
#include "TableView.h" CCScene* TableView::scene()
{
CCScene *scene = CCScene::create(); TableView *layer = TableView::create(); scene->addChild(layer); return scene;
} bool TableView::init()
{
CCLayer::init(); CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCPoint center = ccp(winSize.width / 2, winSize.height / 2); //先创建好CCTableViewCell //创建一个数组
_arr = CCArray::create(); _arr->retain(); for(int i = 0; i < 5; i++)
{
CCTableViewCell* cell = new CCTableViewCell();
cell->autorelease();
_arr->addObject(cell); CCSprite* sprite = CCSprite::create("HelloWorld.png");
cell->addChild(sprite);
sprite->setPosition(center);
} //创建TableView
CCTableView* tableView = CCTableView::create(this, winSize);
addChild(tableView); //设置TableView的滚动方向
//kCCScrollViewDirectionHorizonta表示在水平方向上滚动
tableView->setDirection(kCCScrollViewDirectionHorizontal); //载入数据
tableView->reloadData(); tableView->setDelegate(this); return true;
}
运行结果:
实例2:使用CCTableView创建一个小窗体的滚动视图(该功能经常使用于游戏中的选择道具)
首先创建一个TableViewSmall类
TableViewSmall.h中的代码
#ifndef __TableViewSmall_H__
#define __TableViewSmall_H__ #include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT; class TableViewSmall : public CCLayer, public CCTableViewDataSource, public CCTableViewDelegate
{
public:
virtual bool init(); static CCScene* scene(); CREATE_FUNC(TableViewSmall); //创建一个数组
CCArray* _arr; //返回格子的大小
virtual CCSize tableCellSizeForIndex(CCTableView *table, unsigned int idx)
{
if(1 == idx)
{
return CCSizeMake(60, 40);
} return cellSizeForTable(table);
}; //每一个格子的大小
virtual CCSize cellSizeForTable(CCTableView *table)
{
//每一个格子的大小
return CCSizeMake(40, 40);
} //返回格子的编号
virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx)
{
return (CCTableViewCell*)_arr->objectAtIndex(idx);
} //返回滚动的大小(格子的个数)
virtual unsigned int numberOfCellsInTableView(CCTableView *table)
{
return _arr->count();
} virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell)
{
CCLog("clicked cell is %d", cell->getIdx());
} virtual void scrollViewDidScroll(CCScrollView* view){};
virtual void scrollViewDidZoom(CCScrollView* view){};
}; #endif // __TableViewSmall_H__
TableViewSmall.cpp中的代码
#include "TableViewSmall.h" CCScene* TableViewSmall::scene()
{
CCScene *scene = CCScene::create(); TableViewSmall *layer = TableViewSmall::create(); scene->addChild(layer); return scene;
} bool TableViewSmall::init()
{
CCLayer::init(); CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCPoint center = ccp(winSize.width / 2, winSize.height / 2); //先创建好CCTableViewCell //创建一个数组
_arr = CCArray::create(); _arr->retain(); for(int i = 0; i < 5; i++)
{
CCTableViewCell* cell = new CCTableViewCell();
cell->autorelease();
_arr->addObject(cell); CCSprite* sprite = CCSprite::create("CloseNormal.png");
cell->addChild(sprite);
sprite->setPosition(ccp(20, 20));
} //创建TableView
CCTableView* tableView = CCTableView::create(this, CCSizeMake(40 * 3, 40));
addChild(tableView); //设置TableView的滚动方向
//kCCScrollViewDirectionHorizonta表示在水平方向上滚动
tableView->setDirection(kCCScrollViewDirectionHorizontal); //载入数据
tableView->reloadData(); tableView->setDelegate(this); tableView->setPosition(center); return true;
}
运行结果:
版权声明:本文博客原创文章,博客,未经同意,不得转载。