Cocos2d-X 使用CCTableView创建滚动视图
创建 视图 滚动 cocos2d 使用
2023-09-27 14:27:02 时间
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; }
运行结果:
版权声明:本文博客原创文章,博客,未经同意,不得转载。
相关文章
- Mongo数据两表关联创建视图示例
- Oracle数据库:oracle数据定义语言DDL,查询表、序列、索引、视图、创建表,修改表的列alter,rename to,删除表数据truncate和表drop
- C#【通用方法】创建csv文件的方法
- 创建一个简单的web服务器(二):使用自定义的类加载器来替换URLClassLoader
- MySQL创建表出现 Specified key was too long; max key length is 767 bytes
- 《Python数据分析》一2.7 创建数组的视图和拷贝
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- mkfifo - 创建FIFO(命名管道)
- sqlserver创建存储过程动态表数量创建视图
- 创建交互式用户界面:Flutter 中可关闭小部件的实用指南
- 创建widget
- 解决maven项目创建过慢的问题
- 《深入解析sas:数据处理、分析优化与商业应用》一3.3 创建新变量
- 【转】MySQL中增加sequence管理功能(模拟创建sequence)
- C生万物 | 反汇编深挖【函数栈帧】的创建和销毁
- C++MFC编程笔记day01 MFC介绍、创建MFC程序和重写消息处理
- 安卓开发学习笔记(二):如何用Android Stuidio在res资源下创建xml视图文件
- 设计模式(二): BUILDER生成器模式 -- 创建型模式
- 创建型模式--抽象工厂模式
- MySQL创建用户与授权方法
- Revit API 创建带箭头的标注
- MaxCompute原(ODPS)创建dual表
- linux服务器创建python环境