最近写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. bat文件转换为exe文件

    批处理文件转换为exe文件(简单的处理文件),点击下载 使用超简单的了,不多说.

  2. Vue框架引入JS库的正确姿势

    参考自:https://mp.weixin.qq.com/s?src=3&timestamp=1527154113&ver=1&signature=tWGeTa86gyK*RL ...

  3. MQTT---HiveMQ源代码具体解释(十四)Persistence-LocalPersistence

    源博客地址:http://blog.csdn.net/pipinet123 MQTT交流群:221405150 简单介绍 HiveMQ的Persistence提供配置包含File和Memory,以解决 ...

  4. Shell脚本之:while

    while循环用于不断执行一系列命令,也用于从输入文件中读取数据:命令通常为测试条件.其格式为: while command do Statement(s) to be executed if com ...

  5. RelativeLayout布局(仅在RelativeLayout中有效)

    在父亲布局的相对位置 android:layout_alignParentLeft="true"     //在布局左边 android:layout_alignParentRig ...

  6. mycat可以干什么

     单纯的读写分离,此时配置最为简单,支持读写分离,主从切换 分表分库,对于超过 1000 万的表进行分片,最大支持 1000 亿的单表分片 多租户应用,每个应用一个库,但应用程序只连接 Myca ...

  7. HDU 4930 Fighting the Landlords(扯淡模拟题)

    Fighting the Landlords 大意: 斗地主... . 分别给出两把手牌,肯定都合法.每张牌大小顺序是Y (i.e. colored Joker) > X (i.e. Black ...

  8. 【BLE】CC2541之自己定义按键

    本篇博文最后改动时间:2017年01月06日,11:06. 一.简单介绍 本文以SimpleBLEPeripheral为例.介绍怎样将普通IO口(P12)自己定义为按键. 注:本文加入按键方法不与协议 ...

  9. Chapter 4 马尔科夫链

    4.1 引言 现在要研究的是这样一种过程: 表示在时刻的值(或者状态),想对一串连续时刻的值,比如:,, ... 建立一个概率模型. 最简单的模型就是:假设都是独立的随机变量,但是通常这种假设都是没什 ...

  10. centOS中如何修改运行级别!

    在图形化界面可以用Ctrl+Alt+F2进入命令行窗口 * 假如你使用了虚拟机,有可能会出现不能进去的问题,原因是因为热键冲突 * 解决办法:修改热键就行了 edit→parameter→hot ke ...