5.8TableView可以上下滚动
来源:互联网 发布:七天网络教师阅卷平台 编辑:程序博客网 时间:2024/05/03 16:38
TableView表格视图,它的风格和ListView很像,TableView由ScrollView派生而来
Cocos2d-x之TableView和ScrollView的混合使用:
我们可以左右滑动界面,也可以上下滑动界面,左右滑动的时候不能上下滑动,上下滑动的时候不能左右滑动。这种效果可以用TableView和ScrollView来组合实现,即先弄一个ScrollView,然后把2个TableView当作内容放入这个ScrollView中就可以了http://cn.cocos2d-x.org/tutorial/show?id=2252
Cocos2d-x 3.0 超级马里奥开发笔记(一) -- loadingbar、TableView和pageview的使用
http://cn.cocos2d-x.org/tutorial/show?id=1354
allocate/'æləkeɪt/ 分配;指定
TableViewDataSource是TableView的一个委托,在资源的加载和更新以及设置子项数量上都需要使用它
TableViewDataSource:
//获取给定下标值的子项大小
virtual Size tableCellSizeForIndex(TableView*table,ssize_t idx) {
returncellSizeForTable(table);
};
virtual Size cellSizeForTable(TableView*table) {
return Size::ZERO;
return Size::ZERO;
};//可不写
//根据下标值获取每个子项
virtualTableViewCell* tableCellAtIndex(TableView*table,ssize_t idx);
//子项的个数
virtual ssize_t numberOfCellsInTableView(TableView*table);
TableViewDelegate : public ScrollViewDelegate
//用户点击后离开屏幕时响应
virtualvoidtableCellTouched(TableView* table,TableViewCell* cell);
//用户点击按下某个子项时响应,可用来更改cell按下状态时的图片
virtualvoidtableCellHighlight(TableView* table,TableViewCell* cell);
//用户点击从某个子项上抬起时响应
virtualvoidtableCellUnhighlight(TableView* table,TableViewCell* cell);
//子项被回收时响应
virtualvoidtableCellWillRecycle(TableView* table,TableViewCell* cell);
完整代码(TableView可以上下滚动):
#include"cocos-ext.h"//******
USING_NS_CC_EXT;//******
classHelloWorld : public cocos2d::Layer,publicTableViewDelegate,publicTableViewDataSource
//视图滚动时响应
virtual void scrollViewDidScroll(ScrollView* view);
//视图缩放时响应
virtual void scrollViewDidZoom(ScrollView* view);
//TableViewDelegate : public ScrollViewDelegate
//用户点击后离开屏幕时响应
virtual void tableCellTouched(TableView* table,TableViewCell* cell);
//用户点击按下某个子项时响应,可用来更改cell按下状态时的图片
virtual void tableCellHighlight(TableView* table,TableViewCell* cell);
//用户点击从某个子项上抬起时响应
virtual void tableCellUnhighlight(TableView* table,TableViewCell* cell);
//子项被回收时响应
virtual void tableCellWillRecycle(TableView* table,TableViewCell* cell);
//TableViewDataSource:
//获取给定下标值的子项大小
virtual Size tableCellSizeForIndex(TableView*table, ssize_t idx);
//根据下标值获取每个子项
virtual TableViewCell* tableCellAtIndex(TableView*table, ssize_t idx);
//子项的个数
virtual ssize_t numberOfCellsInTableView(TableView*table);
private:
Size size;
virtual void scrollViewDidScroll(ScrollView* view);
//视图缩放时响应
virtual void scrollViewDidZoom(ScrollView* view);
//TableViewDelegate : public ScrollViewDelegate
//用户点击后离开屏幕时响应
virtual void tableCellTouched(TableView* table,TableViewCell* cell);
//用户点击按下某个子项时响应,可用来更改cell按下状态时的图片
virtual void tableCellHighlight(TableView* table,TableViewCell* cell);
//用户点击从某个子项上抬起时响应
virtual void tableCellUnhighlight(TableView* table,TableViewCell* cell);
//子项被回收时响应
virtual void tableCellWillRecycle(TableView* table,TableViewCell* cell);
//TableViewDataSource:
//获取给定下标值的子项大小
virtual Size tableCellSizeForIndex(TableView*table, ssize_t idx);
//根据下标值获取每个子项
virtual TableViewCell* tableCellAtIndex(TableView*table, ssize_t idx);
//子项的个数
virtual ssize_t numberOfCellsInTableView(TableView*table);
private:
Size size;
Label* txt;//点击显示cell的index
#include"cocos-ext.h"//******
USING_NS_CC_EXT;//******
size= Director::getInstance()->getWinSize();
txt = Label::createWithTTF("index: ", "fonts/Marker Felt.ttf",20);
txt->setPosition(Vec2(size.width*0.2,size.height*0.9));
addChild(txt);
//创建表格视图,这个宽130为cell中图片资源的宽,如果想全屏可滑动,设置屏幕宽即可
// TableView* tableView =TableView::create(cocos2d::extension::TableViewDataSource *dataSource, cocos2d::Size size);
auto tableView =TableView::create(this,Size(130,size.height));
tableView->setDelegate(this);
tableView->setPosition(Vec2(size.width/2-65,0));
//方向竖直
// tableView->setDirection(TableView::Direction::VERTICAL);
tableView->setDirection(ScrollView::Direction::VERTICAL);
addChild(tableView);
//设置表格视图填充子项的排列顺序自顶往下
// tableView->setVerticalFillOrder(cocos2d::extension::TableView::VerticalFillOrder order);
tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN);
//重新加载数据
tableView->reloadData();
return true;
}
//视图滚动时响应
voidHelloWorld::scrollViewDidScroll(ScrollView* view){
CCLOG("scroll");
}
//视图缩放时响应
voidHelloWorld::scrollViewDidZoom(ScrollView* view){
//本文未实现这个功能
CCLOG("zoom");
}
//调用的先后顺序为:tableCellHighlight、tableCellUnhighlight、tableCellTouched
//TableViewDelegate : public ScrollViewDelegate
//用户点击后离开屏幕时响应
voidHelloWorld::tableCellTouched(TableView* table, TableViewCell* cell){
txt->setString(__String::createWithFormat("index: %zi",cell->getIdx())->getCString());
}
//用户点击按下某个子项时响应,可用来更改cell按下状态时的图片
voidHelloWorld::tableCellHighlight(TableView* table, TableViewCell* cell){
auto texture = Director::getInstance()->getTextureCache()->addImage("btn-play-selected.png");
auto sp = (Sprite*)cell->getChildByTag(100);//************
sp->setTexture(texture);
}
//用户点击从某个子项上抬起时响应
voidHelloWorld::tableCellUnhighlight(TableView* table, TableViewCell* cell){
auto texture = Director::getInstance()->getTextureCache()->addImage("btn-play-normal.png");
auto sp = (Sprite*)cell->getChildByTag(100);//************
sp->setTexture(texture);
}
//子项被回收时响应
voidHelloWorld::tableCellWillRecycle(TableView* table, TableViewCell* cell){
CCLOG("cell willRecycle ai index: %zd",cell->getIdx());
}
//TableViewDataSource:
//获取给定下标值的子项大小
SizeHelloWorld::tableCellSizeForIndex(TableView*table, ssize_t idx){
return Size(130,50);
}
//根据下标值获取每个子项
TableViewCell*HelloWorld::tableCellAtIndex(TableView*table, ssize_t idx){
auto string = __String::createWithFormat("%zd",idx);
TableViewCell* cell = table->dequeueCell();
if (!cell) {
//添加每个cell的内容
cell = new TableViewCell();
cell->autorelease();
auto sprite = Sprite::create("btn-play-normal.png");
sprite->setAnchorPoint(Vec2::ZERO);
sprite->setPosition(Vec2::ZERO);
sprite->setTag(100);
cell->addChild(sprite);
auto label = Label::createWithTTF(string->getCString(),"fonts/Marker Felt.ttf",20);//*****
label->setAnchorPoint(Vec2::ZERO);
label->setPosition(Vec2(20,20));
label->setTag(200);
cell->addChild(label);
}else{
auto label = (Label*)cell->getChildByTag(200);
label->setString(string->getCString());
}
return cell;
}
//子项的个数
ssize_tHelloWorld::numberOfCellsInTableView(TableView*table){
return 20;
}
txt = Label::createWithTTF("index: ", "fonts/Marker Felt.ttf",20);
txt->setPosition(Vec2(size.width*0.2,size.height*0.9));
addChild(txt);
//创建表格视图,这个宽130为cell中图片资源的宽,如果想全屏可滑动,设置屏幕宽即可
// TableView* tableView =TableView::create(cocos2d::extension::TableViewDataSource *dataSource, cocos2d::Size size);
auto tableView =TableView::create(this,Size(130,size.height));
tableView->setDelegate(this);
tableView->setPosition(Vec2(size.width/2-65,0));
//方向竖直
// tableView->setDirection(TableView::Direction::VERTICAL);
tableView->setDirection(ScrollView::Direction::VERTICAL);
addChild(tableView);
//设置表格视图填充子项的排列顺序自顶往下
// tableView->setVerticalFillOrder(cocos2d::extension::TableView::VerticalFillOrder order);
tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN);
//重新加载数据
tableView->reloadData();
return true;
}
//视图滚动时响应
voidHelloWorld::scrollViewDidScroll(ScrollView* view){
CCLOG("scroll");
}
//视图缩放时响应
voidHelloWorld::scrollViewDidZoom(ScrollView* view){
//本文未实现这个功能
CCLOG("zoom");
}
//调用的先后顺序为:tableCellHighlight、tableCellUnhighlight、tableCellTouched
//TableViewDelegate : public ScrollViewDelegate
//用户点击后离开屏幕时响应
voidHelloWorld::tableCellTouched(TableView* table, TableViewCell* cell){
txt->setString(__String::createWithFormat("index: %zi",cell->getIdx())->getCString());
}
//用户点击按下某个子项时响应,可用来更改cell按下状态时的图片
voidHelloWorld::tableCellHighlight(TableView* table, TableViewCell* cell){
auto texture = Director::getInstance()->getTextureCache()->addImage("btn-play-selected.png");
auto sp = (Sprite*)cell->getChildByTag(100);//************
sp->setTexture(texture);
}
//用户点击从某个子项上抬起时响应
voidHelloWorld::tableCellUnhighlight(TableView* table, TableViewCell* cell){
auto texture = Director::getInstance()->getTextureCache()->addImage("btn-play-normal.png");
auto sp = (Sprite*)cell->getChildByTag(100);//************
sp->setTexture(texture);
}
//子项被回收时响应
voidHelloWorld::tableCellWillRecycle(TableView* table, TableViewCell* cell){
CCLOG("cell willRecycle ai index: %zd",cell->getIdx());
}
//TableViewDataSource:
//获取给定下标值的子项大小
SizeHelloWorld::tableCellSizeForIndex(TableView*table, ssize_t idx){
return Size(130,50);
}
//根据下标值获取每个子项
TableViewCell*HelloWorld::tableCellAtIndex(TableView*table, ssize_t idx){
auto string = __String::createWithFormat("%zd",idx);
TableViewCell* cell = table->dequeueCell();
if (!cell) {
//添加每个cell的内容
cell = new TableViewCell();
cell->autorelease();
auto sprite = Sprite::create("btn-play-normal.png");
sprite->setAnchorPoint(Vec2::ZERO);
sprite->setPosition(Vec2::ZERO);
sprite->setTag(100);
cell->addChild(sprite);
auto label = Label::createWithTTF(string->getCString(),"fonts/Marker Felt.ttf",20);//*****
label->setAnchorPoint(Vec2::ZERO);
label->setPosition(Vec2(20,20));
label->setTag(200);
cell->addChild(label);
}else{
auto label = (Label*)cell->getChildByTag(200);
label->setString(string->getCString());
}
return cell;
}
//子项的个数
ssize_tHelloWorld::numberOfCellsInTableView(TableView*table){
return 20;
}
0 0
- 5.8TableView可以上下滚动
- iOS.swift 如何设置tableview禁止上下滚动
- tableView 设置可以滚动的背景图
- tableView等滚动视图滚动时收缩上下导航栏与标签栏
- ViewGroup实现可以上下、左右滚动跑马灯效果
- iOS 长按图片拖动,并且试图可以上下滚动
- iOS界面不能点击(tableView 的cell 不能使用点击事件,tableView也不能上下滚动)
- iOS自定义cell,上下滚动tableView后,自定义cell会被打乱,甚至消失了
- JTable放到JScrollPane里,可以上下滚动,但是不能左右滚动问题解决
- 类似如表格-第一行第一列不滚动,其他行列可以上下水平滚动
- div不显示滚动条但实现鼠标移上去可以上下滚动的效果
- iOS tableView上下拉刷新
- tableview添加上下滑动手势
- tableview上下刷新的实现
- tableView分页,上下拉刷新
- iOS11 刷新TableView上下跳动
- pb控件强化:一个在drag时可以自动上下滚动的treeview控件对象
- UI动画架构(上下滚动,里面View可以实现动画<透明,移动,缩放,变色>l)
- Unity中位图字体Font的制作
- [基本实验] Web漏洞演示系统中的SQL注入漏洞
- 5.7ScrollView
- CGAL Cookbook --CGAL简介
- *p,p和&p区别:
- 5.8TableView可以上下滚动
- solution about leetcode problem 2 add Two Numbers
- 张亮:创业的常识
- 怎么选择合适的工业相机
- C#按回车Enter使输入焦点自动跳到下一个TextBox的方法收集
- 第九周项目5——设计类求解一元一次方程
- 可执行java程序,打包成jar,并注册为Windows的系统服务
- UICollectionView删除cell时崩溃的问题
- 三十五、继承与派生:概念介绍与派生类的声明