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 elastic
setTouchEnabled(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 slider
if (isSlider(pTouch))
{
//adjust position
scheduleOnce(schedule_selector(T25ScrollView::adjustViewPosition),0.05f);
return;
}
//judge which position is clicked
CCPoint 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 click
view->setDelegate(this);
return true;
}
其中在TableView中使用了代理的设计模式,类要继承public CCTableViewDataSource,public CCTableViewDelegate,并且实现他们的纯虚函数,从而达到代理的效果
运行效果
ScrollView与TableView实现选择效果的更多相关文章
- iOS中的截屏(屏幕截屏及scrollView或tableView的全部截屏)
iOS中的截屏(屏幕截屏及scrollView或tableView的全部截屏) 2017.03.16 12:18* 字数 52 阅读 563评论 4喜欢 2 1. 截取屏幕尺寸大小的图片并保存至相册 ...
- 利用select实现年月日三级联动的日期选择效果
× 目录 [1]演示 [2]规划 [3]结构生成[4]算法处理 前面的话 关于select控件,可能年月日三级联动的日期选择效果是最常见的应用了.本文是选择框脚本的实践,下面将对日期选择效果进行详细介 ...
- jquery仿淘宝规格颜色选择效果
jquery实现的仿淘宝规格颜色选择效果源代码如下 jquery仿淘宝规格颜色选择效果 -收缩HTML代码 运行代码 [如果运行无效果,请自行将源代码保存为html文件运行] <script t ...
- Listview控件实现已选择效果
Winform中用Listview控件实现更新点击选择后已选择效果,如图: 代码如下: private void frmSelect_Load(object sender, EventArgs e) ...
- 商城项目实战 | 1.1 Android 仿京东商城底部布局的选择效果 —— Selector 选择器的实现
前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 京东商城的底部布局的选择效果看上去很复杂,其实很简单,这主要是要 ...
- iOS-关于一些手势冲突问题(scrollView 嵌套 tableView)
简单说下关于开发中容易遇到的父试图添加手势与子试图点击事件冲突,UIScrollView 嵌套 UIScrollView . UIScrollView 嵌套 UITableView的情况手势冲突问题: ...
- tableview中用动画效果改变cell的高度
我们要的效果大概就是如下效果: 当我们选择一个cell的时候,我们就要改变它的高度,并且以动画的形式. 我们该如何实现这个效果呢?我们主要需要使用以下这两个方法: - (CGFloat)tableVi ...
- Android 仿土巴兔选择效果
1,前两天在群里看到有人在讨论土巴兔的选择装修风格的效果,自己也想实现,果断百度一下,有些好的文章,就花了些时间来分析了下,先看看别人土巴兔原装的功能 2,可以看到,基本上可以使用一个vviewpag ...
- 论坛类应用双Tableview翻页效果实现
作为一名篮球爱好者,经常使用虎扑体育,虎扑体育应用最核心的部分就是其论坛功能,无论哪个版块,论坛都是其核心,而其论坛部分的实现又别具一格,它以两个tableview的形式翻页滚动显示,而不是常见的那种 ...
随机推荐
- HBase概念学习(十)HBase与MongDB等NoSQL数据库对照
转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储. MySQL因为开源,而且生态 ...
- CentOS 6.5(6.4)安装过程图文教程
CentOS 6.4是最新的出的系统,这里分享下安装教程,有些设置大部分教程没出现过,特分享下,方便需要的朋友 1.首先,要有一张CentOS 6.4的安装介质,使用介质启动电脑出现如下界面 界面说明 ...
- [Angularjs]视图和路由(一)
写在前面 对单页应用来讲,视图和路由的作用可以从一个视图跳转到另外一个视图,可以合理管理用户在使用过程中看到的界面. 将视图分解成布局和模版视图,并且根据用户当前访问的URL来展示对应的视图,将会是一 ...
- html5新标签转
HTML 5 是一个新的网络标准,目标在于取代现有的 HTML 4.01, XHTML 1.0 and DOM Level 2 HTML 标准.它希望能够减少浏览器对于需要插件的丰富性网络应用服务(p ...
- easyui datagrid 编辑器绑定事件
依照网上的和自己想的,在获取编辑器后直接绑定事件,思路没有问题,但是总是不响应 细细浏览网上的资料,无意中看到editor 的type 类型和自己写的不一致,自己写的是textbox,而网上的是val ...
- CSS制作图片水平垂直居中
所谓的图片水平垂直居中就是把图片放在一个容器元素中(容器大于图片尺寸或是指定了大小的容器),并且图片位居此容器正中间(中间是指元素容器的正中间),而图片不是以背景图片(background-image ...
- epoch iteration batchsize
深度学习中经常看到epoch. iteration和batchsize,下面按自己的理解说说这三个的区别: (1)batchsize:批大小.在深度学习中,一般采用SGD训练,即每次训练在训练集中取b ...
- windows2008R2安全加固
一.更改终端默认端口号 步骤: 1.运行regedit 2.[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\W ...
- 移动端bug总结
1. 移动端按钮点击蓝框去除 button,input[type="button"] { outline:none; }
- windows关机命令
选择“开始→运行”:1.输入“at 22:00 Shutdown -s”,这样,到了22点电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工作.2.输入 “Shutdown.exe ...