理论基础

PageView类又称Layout的管理器,可以让用户在多个Layout之间左右或者上下切换显示,继承自 Layout 。

代码实践

static PageView * create ()
创建一个空的PageView。

void addWidgetToPage (Widget *widget, ssize_t pageIdx, bool forceCreate)
把一个widget添加到指定的PageView页中。

void addPage (Layout *page)
往PageView的最后插入一页。

void insertPage (Layout *page, int idx)
在指定位置插入一页。

void removePage (Layout *page)
从PageView中移除一页。

void removePageAtIndex (ssize_t index)
移除指定位置的页。

void setDirection (Direction direction)
变更容器翻页方向。

Direction getDirection () const
获取容器翻页方向。

void removeAllPages ()
移除PageView中所有页。

void scrollToPage (ssize_t idx)
滚动到一个指定的页。

ssize_t getCurPageIndex () const
获取当前显示页的索引号。

void setCurPageIndex (ssize_t index)
直接跳转至指定页面(非滚动)

Vector< Layout * > & getPages ()
获取所有页的列表。

Layout * getPage (ssize_t index)
获取指定的页。

void addEventListenerPageView (Ref *target, SEL_PageViewEvent selector)
添加一个页面切换时的回调函数,当页面切换时被调用。

void addEventListener (const ccPageViewCallback &callback)
添加一个页面切换时的回调函数,当页面切换时被调用。

void setCustomScrollThreshold (float threshold)
如果没有指定该值,pageView会在滚到页面一半时切换到下一页。

float getCustomScrollThreshold () const
请求设定的切换页面门限值。

void setUsingCustomScrollThreshold (bool flag)
是否使用用户设置的切换页面门限值。 如果设为false,那么pageView会在滚到页面一半时切换到下一页。

bool isUsingCustomScrollThreshold () const
请求是否使用用户自定义页面切换门限值。

实例:

        // Create the page view
PageView* pageView = PageView::create();
pageView->setContentSize(Size(240.0f, 100.0f));
Size backgroundSize = background->getContentSize();
pageView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f +
(backgroundSize.width - pageView->getContentSize().width) / 2.0f,
(widgetSize.height - backgroundSize.height) / 2.0f +
(backgroundSize.height - pageView->getContentSize().height) / 2.0f + )); int pageCount = ;
for (int i = ; i < pageCount; ++i)
{
Layout* layout = Layout::create();
layout->setContentSize(Size(240.0f, 130.0f)); ImageView* imageView = ImageView::create("cocosui/scrollviewbg.png");
imageView->setScale9Enabled(true);
imageView->setContentSize(Size(, ));
imageView->setPosition(Vec2(layout->getContentSize().width / 2.0f, layout->getContentSize().height / 2.0f));
layout->addChild(imageView); Text* label = Text::create(StringUtils::format("page %d",(i+)), "fonts/Marker Felt.ttf", );
label->setColor(Color3B(, , ));
label->setPosition(Vec2(layout->getContentSize().width / 2.0f, layout->getContentSize().height / 2.0f));
layout->addChild(label); pageView->insertPage(layout,i);
} _uiLayer->addChild(pageView);
pageView->setName("pageView");

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

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

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

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

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

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

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

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

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

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

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

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

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

  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. Hash表(hash table ,又名散列表)

    直接进去主题好了. 什么是哈希表? 哈希表(Hash table,也叫散列表),是根据key而直接进行访问的数据结构.也就是说,它通过把key映射到表中一个位置来访问记录,以加快查找的速度.这个映射函 ...

  2. MySQL 密码设置

    如何修改 MySQL 密码: [root@localhost ~]$ mysqladmin -uroot password 'newPass' # 在无密码的情况下设置密码 [root@localho ...

  3. 为什么setinterval和settimeout越点击越快以及响应的解决办法

    setinterval大家都很了解,但是如果时间长的话,误差也会越来越大,所以我习惯上使用settimeout的递归,闲来没事,写了一个定时器的递归 <!DOCTYPE html> < ...

  4. 【mysql】mysql front 提示Access violation at address 010C9CD0 in module ‘mysql-front.exe’

    1 错误描述: 利用mysql-front 工具新建数据库.提示了一下错误 2 解决办法: 内存越界问题,最好重新注册下Windows的动态链接库 首先“开始”—“cmd” 在打开的dos窗口中运行

  5. MUI 二维码扫描并跳转

    1 首页 index.html <li id="html/barcode.html" onclick="clicked(this.id)"> < ...

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

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

  7. java 集合之HashMap

    原文出处http://zhangshixi.iteye.com/blog/672697 1.    HashMap概述: HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操 ...

  8. Excel 2010 如何快速统计一列中相同数值出现的个数 很不错

    https://jingyan.baidu.com/article/9113f81b2c16822b3214c785.html 最近经常看到论坛和百度知道的朋友提问关于“excel中如何快速统计一列中 ...

  9. 单例模式与静态变量在PHP中 (转载)

    在PHP中,没有普遍意义上的静态变量.与Java.C++不同,PHP中的静态变量的存活周期仅仅是每次PHP的会话周期,所以注定了不会有Java或者C++那种静态变量. 所以,在PHP中,静态变量的存在 ...

  10. python的类继承与派生

    一.继承和派生简介: 其实是一个一个事物站在不同角度去看,说白了就是基于一个或几个类定义一个新的类.比如定义了动物类接着派生出了人类,你也可以说人类继承了动物类.一个意思.此外python类似于C和C ...