-

类说明

CAPageView用于实现分页、翻页效果。CAPageView为我们提供了横向和竖直两个方向的样式。我也可以通过继承CAPageViewDelegate来实现对CAPageView的监听。


CAPageView 属性(点击查看方法介绍)

属性说明
PageViewDirection页面浏览方向
PageViewDelegate页面视图代表
CurrPage当前页
Spacing间距


CAPageView 方法(点击查看方法介绍)

方法说明
createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
createWithCenter创建,并指定其Center,默认Center为(0,0,0,0)
setCurrPage设置显示指定页
getPageCount获取页面总数
setViews添加存放View的CADeque容器
setViews添加存放View的CAVector容器
getSubViewAtIndex通过索引获取子视图
setShowsScrollIndicators设置显示滚动条
init
初始化


我来看一下代码实例:
首先我们需要继承CAPageViewDelegate实现监听函数。我们在.h文件中添加如下代码:

  1. #include <iostream>
  2. #include "CrossApp.h"
  3. USING_NS_CC;
  4. class FirstViewController : public CAViewController, public CAPageViewDelegate
  5. {
  6. public:
  7. FirstViewController();
  8. virtual ~FirstViewController();
  9. //切换开始时调用
  10. virtual void pageViewDidBeginTurning(CAPageView* pageView);
  11. //切换结束时调用
  12. virtual void pageViewDidEndTurning(CAPageView* pageView);
  13. //选择当前的切换页时调用
  14. virtual void pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index, const DPoint& point);
  15. protected:
  16. void viewDidLoad();
  17. void viewDidUnload();
  18. };

然后在.cpp中实现逻辑:

  1. void FirstViewController::viewDidLoad()
  2. {
  3. //生命一个CAVector作为添加到PageView的容器
  4. CAVector<CAView*> viewVector;
  5. //获得屏幕的rect
  6. DRect winRect = this->getView()->getBounds();
  7. //创建CALabel
  8. CALabel* labelView = CALabel::createWithFrame(winRect);
  9. //设置为居中
  10. labelView->setTextAlignment(CATextAlignmentCenter);
  11. labelView->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
  12. labelView->setFontSize(75);
  13. //设置文本内容
  14. labelView->setText(UTF8("第一个View"));
  15. //创建CAImageView
  16. CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));
  17. //设置显示区域
  18. imageView->setFrame(winRect);
  19. //创建一个蓝色的View
  20. CAView* view = CAView::createWithColor(CAColor_blue);
  21. //设置显示区域
  22. view->setFrame(winRect);
  23. //创建CALabel
  24. CALabel* lastLabel = CALabel::createWithFrame(winRect);
  25. //设置居中
  26. lastLabel->setTextAlignment(CATextAlignmentCenter);
  27. lastLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
  28. lastLabel->setFontSize(75);
  29. //设置显示文本
  30. lastLabel->setText(UTF8("最后一个View"));
  31. //将lastLabel添加到view
  32. view->addSubview(lastLabel);
  33. //将上面的三个控件放入到CAVector容器内
  34. viewVector.pushBack(labelView);
  35. viewVector.pushBack(imageView);
  36. viewVector.pushBack(view);
  37. /*创建一个CAPageView并设置为水平滚动
  38. CAPageViewDirectionHorizontal:水平
  39. CAPageViewDirectionVertical:竖直
  40. */
  41. CAPageView* pageViewTest = CAPageView::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5, winRect.size.width, winRect.size.height), CAPageView::CAPageViewDirectionHorizontal);
  42. //设置监听
  43. pageViewTest->setPageViewDelegate(this);
  44. //将CAVector添加到pageViewTest
  45. pageViewTest->setViews(viewVector);
  46. pageViewTest->getPageCount();
  47. //将pageViewTest添到屏幕显示
  48. this->getView()->addSubview(pageViewTest);
  49. }
  50. void FirstViewController::viewDidUnload()
  51. {
  52. // Release any retained subviews of the main view.
  53. // e.g. self.myOutlet = nil;
  54. }
  55. void FirstViewController::pageViewDidBeginTurning(CAPageView* pageView)
  56. {
  57. CCLog("Begin--->");
  58. }
  59. void FirstViewController::pageViewDidEndTurning(CAPageView* pageView)
  60. {
  61. CCLog("End--->");
  62. }
  63. void FirstViewController::pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index, const DPoint& point)
  64. {
  65. CCLog("Index:%d",index);
  66. }

我们创建了一个含有三个CAView的CAPageView,横向滑动可以切换到不同的CAView,在我们切换时候会调用pageViewDidBeginTurning函数和pageViewDidEndTurning函数,当我们点击某个页面的时候pageViewDidSelectPageAtIndex会被调用。


CAPageView 属性说明

PageViewDirection

类型:CAPageViewDirection

解释:页面浏览方向。get{}。

    

PageViewDelegate

类型:CAPageViewDelegate*

解释:页面视图代表。set/get{}。


CurrPage

类型:int

解释:当前页。get{}。


Spacing

类型:int

解释:间距。set/get{}。


CAPageView 方法说明

static CAPageView* createWithFrame(const CCRect& rect, const CAPageViewDirection& type);

返回值:CAPageView*

参数:

类型参数名说明
CCRect&rect大小
CAPageViewDirection&
type类型

解释:创建,并指定其Frame,默认Frame为(0,0,0,0)

    

static CAPageView* createWithCenter(const CCRect& rect, const CAPageViewDirection& type);

返回值:CAPageView*

参数:

类型参数名说明
CCRect&rect大小
CAPageViewDirection&
type类型

解释:创建,并指定其Center,默认Center为(0,0,0,0)


void setCurrPage(int var, bool animated, bool listener = false);

返回值:void

参数:

类型参数名说明
intvar页面数
boolanimated动画
boollistener监听

解释:设置显示指定页

    

unsigned int getPageCount();

返回值:unsigned int

参数:

解释:获取页面总数


void setViews(const CADeque<CAView*>& vec);

返回值:void

参数:

类型参数名说明
CADeque<CAView*>&vecCADeque容器

解释:添加存放View的CADeque容器


void setViews(const CAVector<CAView*>& vec);

返回值:void

参数:

类型参数名说明
CAVector<CAView*>&vecCAVector容器

解释:添加存放View的CAVector容器


CAView* getSubViewAtIndex(int index);

返回值:CAView*

参数:

类型参数名说明
intindex索引

解释:通过索引获取子视图


virtual void setShowsScrollIndicators(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否显示滚动条

解释:设置显示滚动条


bool init();

返回值:bool

参数:

解释:初始化