基础理论

一个能够被用户触摸滚动的一个层次型布局容器视图,允许其尺寸大于屏幕显示的物理尺寸,其内部维护有一个布局用于水平的或垂直的存放子节点。继承自 Layout,被 ListView 继承。

代码实践

void setBounceEnabled (bool enabled)
设置当滚动到边界时,是否内部容器发生弹回(bounce)效果

bool isBounceEnabled () const
获取边界弹回(bounce)状态。

void setInertiaScrollEnabled (bool enabled)
设置是否开启滚动惯性。

bool isInertiaScrollEnabled () const
获取滚动视图是否开启滚动惯性。

void setScrollBarEnabled (bool enabled)
设置是否启用滚动条。

bool isScrollBarEnabled () const
返回滚动条是否启用。

virtual void setDirection (Direction dir)
改变滚动视图的方向。

Direction getDirection () const
获取滚动视图的滚动方向。

Layout * getInnerContainer () const
获取滚动视图的内部布局容器,该布局容器为滚动视图的子节点。

//与滚动方位有关
void scrollToPercentVertical (float percent, float second, bool attenuated)
按百分比竖直滚动内部布局容器

void scrollToPercentHorizontal (float percent, float second, bool attenuated)
按百分比水平滚动内部布局容器

void scrollToPercentBothDirection (const Vec2 &percent, float second, bool attenuated)
在竖直方向和水平方向分别按一定的百分比滚动内部布局容器

void scrollToBottom (float second, bool attenuated)
将内部的布局容器滚动到滚动视图的底部边界。

void scrollToTop (float second, bool attenuated)
将内部布局容器滚动到滚动视图的顶部边界。

void scrollToLeft (float second, bool attenuated)
将内部容器滚动到滚动视图的左端边界

void scrollToRight (float time, bool attenuated)
将内部布局容器滚动到滚动视图的右端边界

void scrollToTopLeft (float second, bool attenuated)
滚动内部布局容器到滚动视图的左上角

void scrollToTopRight (float time, bool attenuated)
滚动内部布局容器到滚动使徒的右上角

void scrollToBottomLeft (float second, bool attenuated)
滚动内部布局容器到视图的左下角

void scrollToBottomRight (float time, bool attenuated)
滚动内部布局容器到视图的右下角

//与滚动条样式有关
void setScrollBarPositionFromCorner (const Vec2 &positionFromCorner)
设置滚动条水平位置和垂直位置。

void setScrollBarPositionFromCornerForVertical (const Vec2 &positionFromCorner)
设置滚动条垂直位置。

Vec2 getScrollBarPositionFromCornerForVertical () const
获得滚动条垂直位置。

void setScrollBarPositionFromCornerForHorizontal (const Vec2 &positionFromCorner)
设置滚动条水平位置。

Vec2 getScrollBarPositionFromCornerForHorizontal () const
获得滚动条水平位置。

void setScrollBarWidth (float width)
设置滚动条宽度。

float getScrollBarWidth () const
获取滚动条宽度。

void setScrollBarColor (const Color3B &color)
设置滚动条颜色。

const Color3B & getScrollBarColor () const
获取滚动条颜色。

void setScrollBarOpacity (GLubyte opacity)
设置滚动条透明度。

GLubyte getScrollBarOpacity () const
获取滚动条透明度。

void setScrollBarAutoHideEnabled (bool autoHideEnabled)
设置滚动条自动隐藏状态。

bool isScrollBarAutoHideEnabled () const
获取滚动条是否自动隐藏。

void setScrollBarAutoHideTime (float autoHideTime)
设置滚动条自动隐藏时间。

float getScrollBarAutoHideTime () const
获取滚动条是否自动隐藏。

//
void jumpToBottom ()
将内部布局容器移至视图底端。

void jumpToTop ()
将内部布局容器移至视图顶端。

void jumpToLeft ()
将内部布局容器移至视图左端。

void jumpToRight ()
将内部布局容器移至视图右端。

void jumpToTopLeft ()
将内部布局容器移至视图的左上角。

void jumpToTopRight ()
将内部布局容器移至视图的右上角。

void jumpToBottomLeft ()
将内部布局容器移至视图的左下角。

void jumpToBottomRight ()
将内部布局容器移至视图的右下角。

void jumpToPercentVertical (float percent)
按一定的百分比竖直滚动视图内的布局容器。

void jumpToPercentHorizontal (float percent)
按一定的百分比竖直滚动视图内的布局容器。

void jumpToPercentBothDirection (const Vec2 &percent)
竖直方向和水平方向分别按一定的百分比滚动容器。

void setInnerContainerSize (const Size &size)
设置滚动容器的滚动区域大小。

const Size & getInnerContainerSize () const
获取滚动容器的滚动区域大小。

void setInnerContainerPosition (const Vec2 &pos)
设置容器内的位置。

const Vec2 getInnerContainerPosition () const
获取容器内的位置。

void addEventListenerScrollView (Ref *target, SEL_ScrollViewEvent selector)
添加一个回调函数,该回调函数将会在视图发生滚动时触发。

virtual void addEventListener (const ccScrollViewCallback &callback)
添加一个回调函数,该回调函数将在滚动事件触发时被调用。

实例:

        Layout* root = static_cast<Layout*>(_uiLayer->getChildByTag());

        Layout* background = dynamic_cast<Layout*>(root->getChildByName("background_Panel"));

        ui::ScrollView* sc = ui::ScrollView::create();
sc->setBackGroundColor(Color3B::GREEN);
sc->setBackGroundColorType(Layout::BackGroundColorType::SOLID);
sc->setBounceEnabled(true);
sc->setDirection(ui::ScrollView::Direction::BOTH);
sc->setInnerContainerSize(Size(, ));
sc->setContentSize(Size(,));
sc->setScrollBarPositionFromCornerForHorizontal(Vec2(, sc->getContentSize().height - ));
sc->setScrollBarPositionFromCornerForVertical(Vec2(sc->getContentSize().width - , ));
sc->setScrollBarAutoHideEnabled(false);
Size backgroundSize = background->getContentSize();
sc->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f +
(backgroundSize.width - sc->getContentSize().width) / 2.0f,
(widgetSize.height - backgroundSize.height) / 2.0f +
(backgroundSize.height - sc->getContentSize().height) / 2.0f));
sc->scrollToPercentBothDirection(Vec2(, ), , true);
ImageView* iv = ImageView::create("cocosui/Hello.png");
iv->setPosition(Vec2(, ));
sc->addChild(iv);
_uiLayer->addChild(sc);
return true;

cocos代码研究(23)Widget子类ScrollView学习笔记的更多相关文章

  1. cocos代码研究(1)Node学习笔记

    理论部分 Node类继承自Ref类,是cocos框架中基础底层的一个封装类,与画面渲染相关的类一般都是继承自该类,例如Scene,Layer,Sprite,Sprite3D,Label,SpriteB ...

  2. cocos代码研究(5)Action学习笔记

    理论部分 Action类也是cocos核心基础类之一,在游戏中起着非常重要的作用,继承自Ref,被 FiniteTimeAction(有限时间动作), Follow , 以及 Speed 继承. 有限 ...

  3. cocos代码研究(2)Label学习笔记

    理论部分 Label类继承自Node类,中文翻译文字与字体,通常在应用开发中为模块作为提示和描述的作用,主要有3中不同的创建方式. 1.通过ttf字体包创建,通过指定本地已有的ttf格式的字体文件,创 ...

  4. cocos代码研究(1)sprite学习笔记

    各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create(, )); addChild(sprit ...

  5. cocos代码研究(2)Layer学习笔记

    auto layer = Layer::create(); /*************华丽分割线*************/ auto layer = LayerColor::create(Colo ...

  6. cocos代码研究(25)Widget子类PageView学习笔记

    基础理论 ListView控件是一个显示滚动项目列表的视图组. 列表项是通过使用addChild或insertDefaultItem插入到列表中的,继承自ScrollView. 代码实践 static ...

  7. cocos代码研究(22)Widget子类Layout学习笔记

    理论基础 一个包含控件的容器. 子节点可以根据布局类型重新排序,它还可以开启剪裁,设置背景图像和颜色.继承自Widget,以及LayoutProtocol. 被 HBox, PageView, Rel ...

  8. cocos代码研究(17)Widget子类RadioButtonGroup学习笔记

    理论基础 RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互. 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被 ...

  9. cocos代码研究(16)Widget子类RadioButton学习笔记

    理论基础 RadioButton是一种特定类型的两状态按钮,它与复选框相似.它可以 和RadioButtonGroup一起使用,形成一个"组".继承自AbstractCheckBu ...

随机推荐

  1. HDU 4497 GCD and LCM (分解质因数)

    链接 :  http://acm.hdu.edu.cn/showproblem.php?pid=4497 假设G不是L的约数 就不可能找到三个数. L的全部素因子一定包括G的全部素因子 而且次方数 ...

  2. 添加app第一次启动页面

    一.添加几个成员变量 @interface hDisplayView ()<UIScrollViewDelegate> { UIScrollView *_bigScrollView; NS ...

  3. JavaScript jQuery 笔记

    资料来源:http://www.w3school.com.cn/jquery/index.asp http://files.cnblogs.com/files/defineconst/jQuery.r ...

  4. IIS7以上版本去掉伪静态去掉index.php方法

    1,由于从iis7以上的版本httpd.ini文件已不会被解析,将以下的xml文件复制到web.config 的文件中,然后放到网站的根目录即可. <?xml version="1.0 ...

  5. 判断页面中的js方法是否存在,存在就调用它,不存在则忽略

    if(typeof queryResource != 'undefined' && queryResource instanceof Function) queryResource(a ...

  6. 进程防结束之PS_CROSS_THREAD_FLAGS_SYSTEM

    有人投到黑防去了,不过黑防不厚道,竟然没给完整的代码,自己整理一份备用吧,驱网.DebugMan.邪八的那群人直接飘过吧. 这种方法的关键在于给线程的ETHREAD.CrossThreadFlags设 ...

  7. 微信公众号支付JSAPI,提示:2支付缺少参数:appId

    因为demo中支付金额是定死的,所以需要调整. 所以在使用的JS上添加了参数传入.这里的传入string类型的参数,直接使用是错误的,对于方法,会出现appid缺少参数的错误 //调用微信JS api ...

  8. poj_1037 动态规划+字典序第k大

    题目大意 给定n个数字,规定一种 cute 排序:序列中的数字大小为严格的波浪形,即 a[0] > a[1] < a[2] > a[3] < .... 或者 a[0] < ...

  9. js基础---->js中的消息框

    可以在JavaScript 中创建三种消息框:警告框.确认框.提示框.今天我们就这几个框做一个介绍.我们笑着说再见,却深知再见遥遥无期. javascript消息框 一.警告框:警告框经常用于确保用户 ...

  10. 关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释

    O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据. 在O/R Mapping的世界里,有 ...