cocos2d-x中CCScrollView纵向展示
最近写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纵向展示的更多相关文章
- 如何在Cocos2D游戏中实现A*寻路算法(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- C#-WinForm-ListView-表格式展示数据、如何将数据库中的数据展示到ListView中、如何对选中的项进行修改
在展示数据库中不知道数量的数据时怎么展示最好呢?--表格 ListView - 表格形式展示数据 ListView 常用属性 HeaderStyle - "详细信息"视图中列标头的 ...
- 在 Windows Azure 网站中进行纵向扩展和横向扩展
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写. 当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手. ...
- 如何在cocos2d项目中enable ARC
如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...
- 如何在Cocos2D游戏中实现A*寻路算法(六)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- Android中软键盘展示、EditText焦点获取及windowSoftInputMode属性探究
2017-08-14 21:44:23 有很多中情况,分别展示. 1.Activity不做任何设置,布局使用LinearLayout 会自动滚动EditText之上的所有View,代码: <?x ...
- 将数据库中的内容展示出来并将某些value值转换成汉字
1.将数据库中的内容展示出来 前台代码未做改变,刚开始未显示的原因是因为 data-field 跟数据库不一样data-field 需要跟数据库中的一样才可以 2.将某些value值转换成汉字 在li ...
- vue项目中数学公式的展示
在这里有个mathjax的插件,可以将dom中的数学公式展示. 第一步安装mathjax npm install mathjax 安装完之后,你会在index.html中发现,已经引用了js文件,并且 ...
- Asp.Net Core Razor页面中使用echarts展示图形
Asp.Net Core Razor页面中使用echarts展示图形 要在Razor页面中使用echarts显示图形,主要问题点在于如何将数据传递给js文件. 1,下载安装echarts库文件 首先引 ...
随机推荐
- useradd umask报错 root用su 切换到普通用户提示输入密码并报密码错误
添加新用户与以下文件有关联: /etc/default/useradd [root@localhost pam.d]# cat /etc/default/useradd # useradd defau ...
- 微信小程序-使用腾讯Wxpage
微信小程序想要更快的速度吗? 满足你 https://github.com/tvfe/wxpage#-c%E5%AE%9A%E4%B9%89 使用超简单(导入wxpage.js,最后使用对象名:P): ...
- 关于使用Axure RP进行原型开发的一些心得体会
Axure RP(Axure Rapid Prototyping)是一款高速实现.准确表达.带有交互效果且易于上手的原型设计工具. 本人在曾參与某系统需求分析时開始接触Axure RP,初步掌握了一定 ...
- Java结束线程的三种方法
线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的.例如在程序中使用线程进行So ...
- java中Executor、ExecutorService、ThreadPoolExecutor介绍
源码非常简单,只有一个execute(Runnable command)回调接口 public interface Executor { /** * Executes the given c ...
- Asp.Net北大青鸟总结(四)-使用GridView实现真假分页
这段时间看完了asp.net视频.可是感觉到自己的学习好像没有巩固好,于是又在图书馆里借了几本关于asp.net的书感觉真的非常好自己大概对于asp.net可以实现主要的小Demo.可是我知道仅仅有真 ...
- hibernate3中session.get()与session.load()两个方法的区别?
1.发送sql的时机不同:load采用延迟加载技术,只有当真正去使用所查处的对象时,才会发送sql:get采用的是立即检索技术,当执行到get方法是就会立即发送sql. 2.返回的对象不同:load返 ...
- python实现接口测试到unittest框架集成
接口测试是面试测试岗位基本都会问到的问题,但是对于一些刚做测试的小伙伴可能并不是很熟悉,也有可能了解接口测试,但是完全不知道接口自动化怎么做.下面我们大概介绍一下. 首先我们需要知道接口自动化测试的目 ...
- Netty聊天室-源码
目录 Netty聊天室 源码工程 写在前面 [百万级流量 聊天室实战]: [分布式 聊天室] [Spring +Netty]: [Netty 原理] 死磕 系列 [提升篇]: [内力大增篇]: 疯狂创 ...
- RocksDB
RocksDB RocksDB is a high performance[1][2][3][4][5] embedded database for key-value data. It is a f ...