cocos2dx TabelView 表格视图
来源:互联网 发布:java 内存泄漏 工具 编辑:程序博客网 时间:2024/06/07 22:42
创建tabelView:
1,添加头文件和命名空间
#include "cocos-ext.h"USING_NS_CC;USING_NS_CC_EXT;
2,继承 TableViewDataSource, TableViewDelegate两个类 并重写某些方法
class HelloWorld : public cocos2d::Layer, TableViewDataSource, TableViewDelegate{public: static cocos2d::Scene* createScene(); // 创建图层 virtual bool init(); // 初始化 void menuCloseCallback(cocos2d::Ref* pSender); // a selector callback CREATE_FUNC(HelloWorld); // create宏public: virtual Size tableCellSizeForIndex(TableView *table, ssize_t idx); virtual Size cellSizeForTable(TableView *table); // 设置tableview的Cell大小 virtual TableViewCell* tableCellAtIndex(TableView *table, ssize_t idx);// 获取编号为idx的cell virtual ssize_t numberOfCellsInTableView(TableView *table); // 设置tableview中cell的个数public: // 当滑动tableview时触发该方法 参数为当前的tableview对象 virtual void scrollViewDidScroll(ScrollView* view) {} // 当tableview被放大或缩小时触发该方法 参数为当前tableview对象 virtual void scrollViewDidZoom(ScrollView* view) {} // 当cell被点击时调用该方法 参数为当前的tableview对象与被点击的cell对象 virtual void tableCellTouched(TableView* table, TableViewCell* cell); // 必须实现的函数 };
3,实现需要重写的方法
//设置编号为 idx 的cell的大小 此处都为100*100Size HelloWorld::tableCellSizeForIndex(TableView *table, ssize_t idx){ return cellSizeForTable(table);}Size HelloWorld::cellSizeForTable(TableView *table) { return Size(100, 50);};//由于tableview是动态获取数据的,该方法在初始化时会被调用一次,之后在每个隐藏的cell显示出来的时候都会调用TableViewCell* HelloWorld::tableCellAtIndex(TableView *table, ssize_t idx){ CCString *string = CCString::createWithFormat("%d", idx); //获得一个可用的cell,因为在我们滑动cell的时候有些cell是显示的,有些不是显示出来的,把没有渲染的cell拿过来 //这样就不用重新new出一个cell了,这样的话可以减小内存的开销 TableViewCell *cell = table->dequeueCell(); LabelTTF *label = NULL; if (NULL == cell) { cell = TableViewCell::create(); //创建一个新的cell CCSprite *sprite = CCSprite::create("..\\Resources\\tabel.png");//创建一个图片精灵 sprite->setAnchorPoint(Vec2::ZERO); //设置精灵锚点为左下角 sprite->setPosition(Vec2(0, 0)); //设置精灵位置 相当于在cell中的相对位置 cell->addChild(sprite); //将精灵加入到cell中 label = LabelTTF::create(string->getCString(), "lidaha", 20.0);//创建一个标签 label->setPosition(Vec2::ZERO); //设置标签相对cell的位置 label->setAnchorPoint(Vec2::ZERO); //设置标签锚点为左下角 //为标签做一个标记,以便于在cell在重用队列中被取出来时,能够获取的该label并重置label信息 label->setTag(123); cell->addChild(label); //将标签加入到cell中 } else { // 如果cell不为空,则根据tag获取到之前cell中存放的元素,并将元素信息重置 //获取当前cell中的label label = (LabelTTF*)cell->getChildByTag(123); label->setString(string->getCString()); //重置label的相关信息 } return cell;}//设置cell的个数 即一个tableview中包含了20个cellssize_t HelloWorld::numberOfCellsInTableView(TableView *table){ return 20;}//当cell被点击时调用 cell->getIdx()获取当前点击cell的编号void HelloWorld::tableCellTouched(TableView* table, TableViewCell* cell){ // 在输出窗口打印出,当前cell的编号 CCLOG("cell touched at index : %i", cell->getIdx());}
4,在 init 方法中创建 TabelView
bool HelloWorld::init(){ ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //创建一个talbleview 将datasource设置为当前的类的对象 tableview的显示区域大小为 100 * 300 TableView* tableView = TableView::create(this, CCSizeMake(100, 300)); //设置tableview为水平方向 //ScrollView::Direction::VERTICAL 为垂直 //ScrollView::Direction::HORIZONTAL 为水平 tableView->setDirection(ScrollView::Direction::VERTICAL); //设置位置 tableView->setPosition(visibleSize / 2); //设置代理对象 tableView->setDelegate(this); // 填充顺序 tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN); //添加tableview到当前layer this->addChild(tableView); //这句话一定要加上啊,意思是用现有的配置去刷新所有的cell tableView->reloadData(); return true;}
0 1
- cocos2dx TabelView 表格视图
- 父视图旋转,tabelView也会跟着旋转吗
- 表格视图
- 表格视图
- UITableViewController表格视图控制器
- iOS表格视图 GMGridView
- iOS表格视图 GMGridView
- 08 TableView 表格视图
- IOS自定义表格视图
- UITableView/表格视图
- 表格视图UITableView
- 表格视图--- 基础
- Qt视图加载表格
- UITableView-表格视图
- 创建表格视图
- 表格视图控制器UITableViewController
- cocos2dx应用程序控件-表格控件
- iOS开源:表格视图GMGridView
- Android 动画,看完这些还不够
- 据说99%的程序猿都不懂得这样表白
- 大师之代码覆盖率篇:80%,不能少
- cocos2dx Menu 菜单
- UVALive 4108城市天际线,混杂着递归与非递归的线段树
- cocos2dx TabelView 表格视图
- 备忘录模式
- c语言,顺序空间游标链表的实现
- 移植Qt-4.8.5出现undefined reference to '__sync_sub_and_fetch_4'解决方法--转载
- 快速排序 插入排序
- 基数排序,,,感想
- 关于强行装逼之代码风骚
- C 程序.data .text .bbs 概述
- NavigationView