ScrollView与TableView实现选择效果

在cocos2dx中,ScrollView与TableView都可以实现选择效果,其中ScrollView较为原始,TableView的格子大小可以不与winSize一样大。

ScrollView实现

#include "T25ScrollView.h"
#include "AppMacros.h"CCScene* T25ScrollView::scene()
{CCScene *scene=CCScene::create();T25ScrollView* layer=T25ScrollView::create();scene->addChild(layer);return scene;
}bool T25ScrollView::init()
{CCLayer::init();CCNode *node=CCNode::create();_node=node;char buf[]="a";for (int i=0;i<5;i++){CCSprite *s=CCSprite::create("HelloWorld.png");node->addChild(s);s->setPosition(ccp(i*winSize.width,0));s->setAnchorPoint(ccp(0,0));CCLabelTTF *label=CCLabelTTF::create(buf,"Arial",24);buf[0]++;s->addChild(label);label->setPosition(ccp(winSize.width/2,winSize.height/2));}CCScrollView *view=CCScrollView::create(winSize,node);addChild(view);view->setDirection(kCCScrollViewDirectionHorizontal);view->setContentSize(CCSizeMake(winSize.width*5,winSize.height));view->setBounceable(false); //get rid of elasticsetTouchEnabled(true);setTouchMode(kCCTouchesOneByOne);return true;
}bool T25ScrollView::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{return true;
}
void T25ScrollView::adjustViewPosition(float dt)
{//calculate int fitPos[]={0,-winSize.width,-winSize.width*2,-winSize.width*3,-winSize.width*4};int x=_node->getPositionX();int i;for(i=0;i<5;i++){int dist=abs(fitPos[i]-x);if (dist<winSize.width/2){break;}}CCPoint ptDest=ccp(fitPos[i],0);_node->runAction(CCMoveTo::create(0.2f,ptDest));
}
void T25ScrollView::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{//judge if is sliderif (isSlider(pTouch)){//adjust position scheduleOnce(schedule_selector(T25ScrollView::adjustViewPosition),0.05f);return;}//judge which position is clickedCCPoint ptWorld=pTouch->getLocation();CCPoint ptNode=_node->convertToNodeSpace(ptWorld);int index=ptNode.x/winSize.width;CCLog("click index =%d",index);
}bool T25ScrollView::isSlider(CCTouch *PTouch)
{CCPoint ptCur=PTouch->getLocation();CCPoint ptStart=PTouch->getStartLocation();if (ptCur.getDistanceSq(ptStart)>25){return true;}return false;
}

TableView实现

#include "T26TableView.h"
#include "AppMacros.h"CCScene* T26TableView::scene()
{CCScene *scene=CCScene::create();T26TableView* layer=T26TableView::create();scene->addChild(layer);return scene;
}bool T26TableView::init()
{CCLayer::init();CCSize cellSize=CCSize(80,80);_cells=CCArray::create();_cells->retain();for(int i=0;i<5;i++){CCTableViewCell *cell=new CCTableViewCell;_cells->addObject(cell);cell->autorelease();CCSprite *sprite=CCSprite::create("p_2_01.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));//response clickview->setDelegate(this);return true;
}

其中在TableView中使用了代理的设计模式,类要继承public CCTableViewDataSource,public CCTableViewDelegate,并且实现他们的纯虚函数,从而达到代理的效果

运行效果

结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科学家发现新的人类脑细胞,或可解答一个难题

来源&#xff1a;中国生物技术网关于人类大脑最令人感兴趣的问题之一&#xff0c;也是神经科学家们最难回答的问题之一&#xff0c;就是到底是什么让我们的大脑与其他动物的大脑区别开来。Allen脑科学研究所的研究员Ed Lein博士说&#xff1a;“我们并不清楚是什么让人类大脑变…

Cocos2dx中零散知识点

cocos2dx中有三种定时器&#xff1a;schedule&#xff0c;scheduleUpdate&#xff0c;scheduleOnce。功能分别是 每隔几秒调用自定义函数、调用系统默认的update()函数、只调用一次自定义函数 1、scheduleUpdate 加入当前节点后&#xff0c;程序会每帧都会自动执行一次默认的…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 6丨统计各专业学生人数【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

五问智能教育未来发展:重点解决什么问题?

来源&#xff1a;人民日报日前&#xff0c;首届中国智能教育大会在北京举行&#xff0c;教育部有关负责人、人工智能专家和教育专家、一些地方政府及教育行政部门负责人、大中小学校长、教师和企业家等近1000人参加。与会代表认为&#xff0c;智能教育将会越来越多地影响每一个…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 6丨寻找用户推荐人【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

Ubuntu下Memcache的安装与基本使用

在全世界范围内很多大负载站点采用了Memcache作缓存服务&#xff0c;以分担数据库服务器的压力。 这里只介绍在Ubuntu下如何配置Memcache和如何在PHP使用Memecache&#xff0c;对于更深入的了解&#xff0c;比如Memcache的运作机理或更高级的应用还是Google一下…^_^ 关于Memca…

实现超级玛丽上下左右运动

用Cocos2dx实现超级玛丽&#xff0c;首先用帧循环定时器判断方向&#xff0c;再在类中实现运行以及判断是否能运动。 方向控制 void LayerGame::moveMario(float dt) { #ifdef WIN32short key;key GetKeyState(F);if (key < 0) _marioDir Common::RIGHT;key GetKeyStat…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 7丨大的国家【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

自动驾驶前沿报告!解密六大关键技术,全球人才分布

来源&#xff1a;智东西摘要&#xff1a;清华-中国工程院知识智能联合研究中心从技术、人才、应用和趋势的维度盘点自动驾驶的发展。从传统车企到新造车势力&#xff0c;再到互联网大佬&#xff0c;都在加注自动驾驶。自动驾驶既指向了更高效安全的交通运营系统&#xff0c;也意…

利用工厂模式实现怪物系统

利用工厂模式可以有效的降低类与类的藕合性&#xff0c;增强代码的可重用性&#xff0c;工厂模式主要通过虚函数的原理进行。 当基类指针指向一个子类对象&#xff0c;通过这个指针调用子类和基类同名成员函数的时候&#xff0c;基类声明为虚函数「子类不写也可以」就会调子类…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 7丨好友申请 I :总体通过率【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

边缘计算技术发展与对策研究

来源&#xff1a;5G作者&#xff1a;洪学海&#xff0c;中国科学院计算技术研究所&#xff0c;中国科学院计算机网络信息中心&#xff0c;研究员&#xff1b;汪洋&#xff0c;中国科学院计算机网络信息中心。未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&a…

Android初探:LINUX(Ubuntu)下安装开发环境

第一步&#xff1a; 安装Ubuntu, 我现在装的是12.04LTS&#xff0c;12.04LTS 将得到长达5年的更新支持&#xff0c;而新出来的12.10则只有两年的更新支持&#xff0c;并且Google Android开发/源码网站上也将12.04作为支持系统之一&#xff0c;所以不推荐12.10安装完ubuntu系统后…

windows下同时安装python2与python3

由于python2与python3并不相互兼容&#xff0c;并且差别较大&#xff0c;所以有时需要同时安装&#xff0c;但在操作命令行时&#xff0c;怎么区别python2与python3呢&#xff1f; 1.下载并安装Python 2.7.9和Python 3.4.1。 2.找到Python 2.7.9的安装目录C:\Python27&#x…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 7丨字节面试真题【难度困难】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

发布 | 2018年中美智慧城市行业研究系列报告

来源&#xff1a;桥域咨询报告链接:https://pan.baidu.com/s/1fGrtzH0nLsldDvpE04DY6A 密码:q9q2未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体…

oracle收发邮件存储过程

oracle收发邮件存储过程 2012-04-13 13:33:32| 分类&#xff1a; .NET | 标签&#xff1a; |字号大中小 订阅 CREATE OR REPLACE PROCEDURE PROC_SEND_EMAIL(P_TXT VARCHAR2, P_SUB VARCHAR2, …

commons-fileupload实现文件上传下载

commons-fileupload是Apache提供的一个实现文件上传下载的简单&#xff0c;有效途径,需要commons-io包的支持&#xff0c;本文是一个简单的示例 上传页面,注意设置响应头 <body><center><h1>文件上传页面</h1><hr><form action"${page…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 8丨判断三角形【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 8丨平面上的最近距离【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…