最近写CCScrollView遇到很多问题,样式是竖直的类似tableview,在此记录下:

 CCLayer* layer;   

初始化scrollview内容器层

 layer = CCLayer::create();

设置layer

 layer->setPosition(ccp(, -));

初始化CCScrollView

     scrollView=CCScrollView::create(CCSizeMake(, --));
scrollView->setPosition(ccp(,));
scrollView->setDelegate(this);
this->addChild(scrollView);
scrollView->setContainer(layer);
scrollView->setContentSize(CCSizeMake(, -));
scrollView->setDirection(kCCScrollViewDirectionVertical);
scrollView->setTouchEnabled(false);

校对和调整回滚

 bool HandbookManager::ccTouchBegan( CCTouch *pTouch, CCEvent *pEvent )
{
CCPoint startPos = pTouch->getLocation(); return true;
} void HandbookManager::ccTouchMoved( CCTouch *pTouch, CCEvent *pEvent )
{
CCPoint currPos = pTouch->getLocation();
CCPoint prevPos = pTouch->getPreviousLocation(); CCLayer * info_listbg = (CCLayer*)scrollView->getContainer(); if(scrollView->boundingBox().containsPoint(currPos))
{
float y = info_listbg->getPositionY();
info_listbg->setPositionY(y+currPos.y-prevPos.y);
}
} void HandbookManager::ccTouchEnded( CCTouch *pTouch, CCEvent *pEvent )
{
CCPoint touchPoint = convertTouchToNodeSpace(pTouch);
touchPoint = ccpAdd(this->getPosition(), touchPoint);
float dx=fabs(pTouch->getStartLocation().x-pTouch->getLocation().x);
float dy=fabs(pTouch->getStartLocation().y-pTouch->getLocation().y); if(dx< && dy<){
this->touchPoint(touchPoint);
} CCSprite * s1 = (CCSprite*)layer->getChildByTag();//取出层上最上精灵元素
CCSprite * s2 = (CCSprite*)layer->getChildByTag(flagTag);//取出层上最下精灵元素元素 p1.y -= - layer->getPositionY();
p2.y -= - layer->getPositionY()+; //firstSpritePosition为层上最上面元素的position
//lastSpritePosition 为层上最下面元素的position float y1 = firstSpritePosition.y;
float y2;
if(lastSpritePosition.y>firstSpritePosition.y-scrollView->boundingBox().size.height)
y2 = lastSpritePosition.y;
else
y2 = firstSpritePosition.y-scrollView->boundingBox().size.height; if(p1.y <= y1){
CCActionInterval * action = CCMoveBy::create((y1-p1.y)/,ccp(,y1-p1.y));
layer->runAction(action);
}
if(p2.y >= y2){ CCActionInterval * action = CCMoveBy::create((p2.y-y2)/,ccp(,y2-p2.y));
layer->runAction(action); }
}

//取得scrollview中点击区域

 CCRect HandbookManager::getRect(CCNode * pNode)
{
CCRect rc;
rc.origin = pNode->getPosition();
rc.size = pNode->boundingBox().size;
rc.origin.x -= rc.size.width*0.5 - layer->getPositionX();
rc.origin.y -= rc.size.height*0.5- layer->getPositionY(); rc.origin.x += ;
rc.origin.y += ;
return rc;
}

cocos2d-x中CCScrollView纵向展示的更多相关文章

  1. 如何在Cocos2D游戏中实现A*寻路算法(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  2. C#-WinForm-ListView-表格式展示数据、如何将数据库中的数据展示到ListView中、如何对选中的项进行修改

    在展示数据库中不知道数量的数据时怎么展示最好呢?--表格 ListView - 表格形式展示数据 ListView 常用属性 HeaderStyle - "详细信息"视图中列标头的 ...

  3. 在 Windows Azure 网站中进行纵向扩展和横向扩展

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写. 当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手. ...

  4. 如何在cocos2d项目中enable ARC

    如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...

  5. 如何在Cocos2D游戏中实现A*寻路算法(六)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  6. Android中软键盘展示、EditText焦点获取及windowSoftInputMode属性探究

    2017-08-14 21:44:23 有很多中情况,分别展示. 1.Activity不做任何设置,布局使用LinearLayout 会自动滚动EditText之上的所有View,代码: <?x ...

  7. 将数据库中的内容展示出来并将某些value值转换成汉字

    1.将数据库中的内容展示出来 前台代码未做改变,刚开始未显示的原因是因为 data-field 跟数据库不一样data-field 需要跟数据库中的一样才可以 2.将某些value值转换成汉字 在li ...

  8. vue项目中数学公式的展示

    在这里有个mathjax的插件,可以将dom中的数学公式展示. 第一步安装mathjax npm install mathjax 安装完之后,你会在index.html中发现,已经引用了js文件,并且 ...

  9. Asp.Net Core Razor页面中使用echarts展示图形

    Asp.Net Core Razor页面中使用echarts展示图形 要在Razor页面中使用echarts显示图形,主要问题点在于如何将数据传递给js文件. 1,下载安装echarts库文件 首先引 ...

随机推荐

  1. nodejs - 创建服务器(1)

    在此之前,确保你已经安装了Node(并且你很会折腾) - 有人说,Java脚本和Java最本质的区别就是一个超会更新,一个死守旧. 如果你没有安装,请去官网下载并且安装:http://nodejs.c ...

  2. js 小总结

    数组操作 创建数组:var standTerm = new Array("维护","维修"); var arr = new Array(); 数组长度:leng ...

  3. SAS学习经验总结分享:篇一—数据的读取

    第一篇:BASE SAS分为数据步的作用及生成数据集的方式 我是学经济相关专业毕业的,从事数据分析工作近一年,之前一直在用EXCEL,自认为EXCEL掌握的还不错. 今年5月份听说了SAS,便开始学习 ...

  4. Python 的下载安装

    学习Python牛逼的教程: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000,本文 ...

  5. layui-概念-入门-总结

    layui教程:http://www.dosrun.com/layui/ 获得 Layui你可以在官网首页下载到 Layui 的最新版,也可以通过 GitHub得到Layui的开源包.目前只同步维护这 ...

  6. hdu5386(暴力)

    题意: 给出两个n*n的矩阵,一个作为初始矩阵.一个作为目标矩阵,给出m个操作,操作有两种,一种是"L,x,y".代表我们要把x这一行赋成y,还有一种是"H,x,y&qu ...

  7. RSA非对称算法实现HTTP密码加密传输

    目前一般帐号系统,都是https来传输账户性息,申请一个https证书也不贵.但是网站的其它功能并不需要走https协议,https和http混布比较麻烦,所以决定先实现一个http协议传输RSA非对 ...

  8. kotlin 语言入门指南(一)--基础语法

    基于官网的Getting Start的基础语法教程部分,一共三节,这篇是第一节,翻译如下: 基础语法 定义一个包 包的声明必须放在文件头部: package my.demo import java.u ...

  9. Uboot的串口下载文件命令:loads / loadb / loady

    1. loads loads [ off ] 通过串口,下载S-Rec文件到off位置 loads命令可以通过串口线下载S-Record格式文件. 2. loadb loadb [ off ] [ b ...

  10. POJ 1787 Charlie&#39;s Change

    多重背包 可行性+路径记录 题意是说你要用很多其它的零钱去买咖啡.最后输出你分别要用的 1,5 ,10 .25 的钱的数量. 多重背包二进制分解.然后记录下 这个状态.最后逆向推就可以. #inclu ...