理论基础

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. cocos2d-x 2.2 创建项目

    楼主用的是2.2版本号 曾经的版本号是要在vs中加入模版 建立项目 但新版本号更新后使用python建立项目 最好是python2.7以上 找到create_project.py文件所在路径  too ...

  2. GIS-009-Cesium 使用

    //加载ArcGIS 发布的地图服务MapServervar url='http://Jason:6080/arcgis/rest/services/SampleWorldCities/MapServ ...

  3. Oracle的闪回操作

    Oracle10g中引入了闪回技术,但这并不意味着所有的表都能闪回成功,当没有足够的磁盘空间,Oracle将使用回收站中的磁盘空间,而且位图连接索引和引用完整性约束也不受回收站的保护. recycle ...

  4. mysql增删改查基本语句

    mysql的增删改查属于基本操作,又被简称CRUD,其中删用的较少,毕竟这个功能给用户是是非常危险的,就是客户删除的数据也没有真正的删除,其中查询是十分常用的. 1 mysql数据库增加:create ...

  5. poj_3067 树状数组

    题目大意 左右两个竖排,左边竖排有N个点,从上到下依次标记为1,2,...N; 右边竖排有M个点,从上到下依次标记为1,2....M.现在从K条直线分别连接左边一个点和右边一个点,求这K条直线的交点个 ...

  6. 【Android N 7.1.1】 ActivityManagerService 获取cpu状态

    void updateCpuStatsNow() { synchronized (mProcessCpuTracker) { mProcessCpuMutexFree.set(false); fina ...

  7. oracle和mysql如何快速查看每个表的数据量?

    oracle: select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC; mysql: use informa ...

  8. 微信小程序 --- 获取当前坐标

    获取位置:get.location type:wgs84(是全球定位系统,获取的坐标,gcj02是国家测绘局给出的坐标) btnclick:function(){ wx.getLocation({ t ...

  9. json包的不同导致结果不同

    json包的不同导致结果不同 引入如下json jar包 import org.json.JSONArray; 2 import org.json.JSONObject; 代码: JSONObject ...

  10. having使用的时机

    where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行. having 子句的作用是筛选满足条件的 ...