本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-X 节点(UIPageView.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
一个翻页视图,里面包含了一些对页面操作的方法
/cocos2d-x-3.0alpha0/extensions/CocoStudio/GUI/UIWidgets/ScrollWidget
// 一个翻页视图,里面包含了一些对页面操作的方法
#ifndef __UIPAGEVIEW_H__
#define __UIPAGEVIEW_H__
#include "../../Layouts/Layout.h"
#include "UIScrollInterface.h"
NS_CC_EXT_BEGIN
typedef enum
{
PAGEVIEW_EVENT_TURNING,
}PageViewEventType;
typedef void (Object::*SEL_PageViewEvent)(Object*, PageViewEventType);
#define pagevieweventselector(_SELECTOR)(SEL_PageViewEvent)(&_SELECTOR)
typedef enum {
PAGEVIEW_TOUCHLEFT,
PAGEVIEW_TOUCHRIGHT
}PVTouchDir;
class UIPageView : public Layout , public UIScrollInterface
{
public:
/**
* Default constructor
*/
UIPageView();
/**
* Default destructor
*/
virtual ~UIPageView();
/**
* Allocates and initializes.
*/
static UIPageView* create();
/**
* Add a widget to a page of pageview. //把 widget 添加到页面视图里面的一个页面
*
* @param widget widget to be added to pageview.
*
* @param pageIdx index of page.
*
* @param forceCreate if force create and there is no page exsit, pageview would create a default page for adding widget.
*/
void addWidgetToPage(UIWidget* widget, int pageIdx, bool forceCreate);
/**
* Push back a page to pageview. //从页面视图里面回退一个页面
*
* @param page page to be added to pageview.
*/
void addPage(Layout* page);
/**
* Inert a page to pageview. //在页面视图里面插入一个页面
*
* @param page page to be added to pageview.
*/
void insertPage(Layout* page, int idx);
/**
* Remove a page of pageview. //从页面视图里面移除一个页面
*
* @param page page which will be removed.
*/
void removePage(Layout* page);
/**
* Remove a page at index of pageview. //从页面视图里面移除索引对应的页面
*
* @param index index of page.
*/
void removePageAtIndex(int index);
/**
* scroll pageview to index. //滚动页面视图索引。
*
* @param idx index of page.
*/
void scrollToPage(int idx);
/**
* Gets current page index. //获取当前页的索引
*
* @return current page index.
*/
int getCurPageIndex() const;
// event //添加事件监听
void addEventListener(Object *target, SEL_PageViewEvent selector);
//override "removeChild" method of widget. 覆盖 widget 的 removeChild 方法
virtual bool removeChild(UIWidget* widget);
//override "removeAllChildrenAndCleanUp" method of widget.
virtual void removeAllChildren();
//override "onTouchBegan" method of widget.
virtual bool onTouchBegan(const Point &touchPoint);
//override "onTouchMoved" method of widget.
virtual void onTouchMoved(const Point &touchPoint);
//override "onTouchEnded" method of widget.
virtual void onTouchEnded(const Point &touchPoint);
//override "onTouchCancelled" method of widget.
virtual void onTouchCancelled(const Point &touchPoint);
//override "update" method of widget. //覆盖 widget 的update 方法
virtual void update(float dt);
/**
* Returns the "class name" of widget. //返回 widget 的名字
*/
virtual const char* getDescription() const;
protected:
virtual bool addChild(UIWidget* widget);
virtual bool init();
Layout* createPage();
float getPositionXByIndex(int idx);
void updateBoundaryPages();
virtual void handlePressLogic(const Point &touchPoint);
virtual void handleMoveLogic(const Point &touchPoint);
virtual void handleReleaseLogic(const Point &touchPoint);
virtual void interceptTouchEvent(int handleState, UIWidget* sender, const Point &touchPoint);
virtual void checkChildInfo(int handleState, UIWidget* sender, const Point &touchPoint);
virtual bool scrollPages(float touchOffset);
void movePages(float offset);
void pageTurningEvent();
void updateChildrenSize();
void updateChildrenPosition();
virtual void onSizeChanged();
virtual void setClippingEnabled(bool able){Layout::setClippingEnabled(able);};
protected:
int _curPageIdx;
Array* _pages;
PVTouchDir _touchMoveDir;
float _touchStartLocation;
float _touchEndLocation;
float _touchMoveStartLocation;
Point _movePagePoint;
UIWidget* _leftChild;
UIWidget* _rightChild;
float _leftBoundary;
float _rightBoundary;
bool _isAutoScrolling;
float _autoScrollDistance;
float _autoScrollSpeed;
int _autoScrollDir;
float _childFocusCancelOffset;
Object* _eventListener;
SEL_PageViewEvent _eventSelector;
};
NS_CC_EXT_END
#endif /* defined(__UIPageView__) */