https://www.cnblogs.com/guangyun/p/8991386.html
/**
- ScrollView的滚动方向
*/
enum class Direction
{
NONE,
VERTICAL,
HORIZONTAL,
BOTH
};
/**
- ScrollView的滚动事件类型
*/
enum class EventType
{
SCROLL_TO_TOP, // 向上滚动
SCROLL_TO_BOTTOM, // 向下滚动
SCROLL_TO_LEFT, // 向左滚动
SCROLL_TO_RIGHT, // 向右滚动
SCROLLING, // 滚动中
BOUNCE_TOP, // 向上反弹
BOUNCE_BOTTOM, // 向下反弹
BOUNCE_LEFT, // 向左反弹
BOUNCE_RIGHT, // 向右反弹
CONTAINER_MOVED // 容器移动
};
/**
- 构造函数
- @js ctor
- @lua new
*/
ScrollView();
/**
- 创建一个空ScrollView
- @return 返回一个ScrollView
/
static ScrollView create();
/**
- 设置ScrollView的滚动方向
- @param dir 查看枚举 Direction
*/
virtual void setDirection(Direction dir);
/**
- 获取ScrollView的滚动方向
- @return 返回Direction枚举
*/
Direction getDirection()const;
/**
- 获取ScrollView内的基容器,是一个ScrollView的子视图(继承关系)
- @return 返回ScrollView内的子容器
/
Layout getInnerContainer()const;
/**
- 将ScrollView滚动到底部
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToBottom(float timeInSec, bool attenuated);
/**
- 将ScrollView滚动到顶部
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToTop(float timeInSec, bool attenuated);
/**
- 将ScrollView滚动到左侧
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToLeft(float timeInSec, bool attenuated);
/**
- 将ScrollView滚动到右侧
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToRight(float timeInSec, bool attenuated);
/**
- 将ScrollView滚动到顶部左侧
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToTopLeft(float timeInSec, bool attenuated);
/**
- 将ScrollView滚动到顶部右侧
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToTopRight(float timeInSec, bool attenuated);
/**
- 将ScrollView滚动到底部左侧
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToBottomLeft(float timeInSec, bool attenuated);
/**
- 将ScrollView滚动到底部右侧
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToBottomRight(float timeInSec, bool attenuated);
/**
- 将ScrollView以垂直方向滚动到指定百分比位置
- @param percent 百分值 0-100
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToPercentVertical(float percent, float timeInSec, bool attenuated);
/**
- 将ScrollView以水平方向滚动到指定百分比位置
- @param percent 百分值 0-100
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToPercentHorizontal(float percent, float timeInSec, bool attenuated);
/**
- 将ScrollView以水平和垂直方向滚动到指定百分比位置
- @param percent 百分值 0-100
- @param timeInSec 滚动时长
- @param attenuated 是否进行减速
*/
void scrollToPercentBothDirection(const Vec2& percent, float timeInSec, bool attenuated);
/**
- 跳到ScrollView底部
*/
virtual void jumpToBottom();
/**
- 跳到ScrollView顶部
*/
virtual void jumpToTop();
/**
- 跳到ScrollView左侧
*/
virtual void jumpToLeft();
/**
- 跳到ScrollView右侧
*/
virtual void jumpToRight();
/**
- 跳到ScrollView左上
*/
virtual void jumpToTopLeft();
/**
- 跳到ScrollView右上
*/
virtual void jumpToTopRight();
/**
- 跳到ScrollView左下
*/
virtual void jumpToBottomLeft();
/**
- 跳到ScrollView右下
*/
virtual void jumpToBottomRight();
/**
- 以垂直方向跳到ScrollView指定的百分比位置
- @param percent 百分值 0-100
*/
virtual void jumpToPercentVertical(float percent);
/**
- 以水平方向跳到ScrollView指定的百分比位置
- @param percent 百分值 0-100
*/
virtual void jumpToPercentHorizontal(float percent);
/**
- 以水平和垂直方向跳到ScrollView指定的百分比位置
- @param percent 百分值 0-100
*/
virtual void jumpToPercentBothDirection(const Vec2& percent);
/**
- 设置ScrollView的滚动范围大小
- @param size 滚动范围
*/
void setInnerContainerSize(const Size &size);
/**
- 获取ScrollView的滚动范围大小
- @return Size 滚动范围
*/
const Size& getInnerContainerSize() const;
/**
- 设置ScrollView的滚动位置
- @param pos 坐标
*/
void setInnerContainerPosition(const Vec2 &pos);
/**
- 获取ScrollView的滚动位置
- @return Vec2 坐标
*/
const Vec2 getInnerContainerPosition() const;
/**
- ScrollView即将滚动时调用的回调
/
typedef std::function<void(Ref, EventType)> ccScrollViewCallback;
/**
- 添加ScrollView的滚动事件回调
- @param callback 查看ccScrollViewCallback
*/
virtual void addEventListener(const ccScrollViewCallback& callback);
/**
- 添加子节点
- @param child 子节点
- @param localZOrder 层级树中的位置
- @param tag 节点tag值
- @param name 节点名
/
virtual void addChild(Node child)override;
virtual void addChild(Node * child, int localZOrder)override;
virtual void addChild(Node* child, int localZOrder, int tag) override;
virtual void addChild(Node* child, int localZOrder, const std::string &name) override;
/**
- 移除所有子节点
*/
virtual void removeAllChildren() override;
/**
- 移除所有子节点并清除动作及回调函数
*/
virtual void removeAllChildrenWithCleanup(bool cleanup) override;
/**
- 移除指定节点
- @param child 子节点
- @param cleaup 是否清除动作及回调函数
/
virtual void removeChild(Node child, bool cleaup = true) override;
/**
- 获取子节点
/
virtual Vector<Node>& getChildren() override;
virtual const Vector<Node*>& getChildren() const override;
/**
- 获取所有子节点的总数
*/
virtual ssize_t getChildrenCount() const override;
/**
- 通过tag获取子节点
- @param tag 节点tag值
*/
virtual Node * getChildByTag(int tag) const override;
/**
- 通过name获取子节点
- @param name 节点name值
/
virtual Node getChildByName(const std::string& name)const override;
/**
- ScrollView交互事件
*/
virtual bool onTouchBegan(Touch *touch, Event *unusedEvent) override;
virtual void onTouchMoved(Touch *touch, Event *unusedEvent) override;
virtual void onTouchEnded(Touch *touch, Event *unusedEvent) override;
virtual void onTouchCancelled(Touch *touch, Event *unusedEvent) override;
/**
- ?
*/
virtual void update(float dt) override;
/**
- 设置ScrollView回弹效果
- @param enabled 是否可以回弹
*/
void setBounceEnabled(bool enabled);
/**
- 获取ScrollView是否回弹
- @return 是否可以回弹
*/
bool isBounceEnabled() const;
/**
- 设置ScrollView的惯性滚动(即快速拖动后,会继续滚动一段距离并逐渐停下)
- @param enabled 是否设置惯性滚动
*/
void setInertiaScrollEnabled(bool enabled);
/**
- 获取ScrollView是否惯性滚动
- @return 是否支持惯性滚动
*/
bool isInertiaScrollEnabled() const;
/**
- 设置ScrollView是否显示滚动条
- @param enabled 是否显示滚动条
*/
void setScrollBarEnabled(bool enabled);
/**
- 获取ScrollView是否显示滚动条
- @return 是否显示滚动条
*/
bool isScrollBarEnabled() const;
/**
- 从左下角(水平)和右上角(垂直)设置滚动条位置
- @param positionFromCorner 坐标位置
*/
void setScrollBarPositionFromCorner(const Vec2& positionFromCorner);
/**
- 从右上角设置垂直滚动条位置
- @param positionFromCorner 坐标位置
*/
void setScrollBarPositionFromCornerForVertical(const Vec2& positionFromCorner);
/**
- 从右上角获取垂直滚动条的位置
- @return positionFromCorner 坐标位置
*/
Vec2 getScrollBarPositionFromCornerForVertical() const;
/**
- 从左下角设置水平滚动条的位置
- @param positionFromCorner 坐标位置
*/
void setScrollBarPositionFromCornerForHorizontal(const Vec2& positionFromCorner);
/**
- 从右上角获取水平滚动条的位置
- @return positionFromCorner 坐标位置
*/
Vec2 getScrollBarPositionFromCornerForHorizontal() const;
/**
- 设置滚动条的宽度
- @param width 滚动条的宽度
*/
void setScrollBarWidth(float width);
/**
- 获取滚动条的宽度
- @return 滚动条的宽度
*/
float getScrollBarWidth() const;
/**
- 设置滚动条的颜色
- @param color 滚动条颜色
*/
void setScrollBarColor(const Color3B& color);
/**
- 获取滚动条的颜色
- @return 滚动条颜色
*/
const Color3B& getScrollBarColor() const;
/**
- 设置滚动条的透明度
- @param opacity 透明度 0-100
*/
void setScrollBarOpacity(GLubyte opacity);
/**
- 获取滚动条的透明度
- @return 透明度 0-100
*/
GLubyte getScrollBarOpacity() const;
/**
- 设置滚动条自动隐藏状态
- @param autoHideEnabled 是否自动隐藏
*/
void setScrollBarAutoHideEnabled(bool autoHideEnabled);
/**
- 获取滚动条自动隐藏状态
- @return 是否自动隐藏
*/
bool isScrollBarAutoHideEnabled() const;
/**
- 设置滚动条自动隐藏时间
- @param autoHideTime 自动隐藏的时间
*/
void setScrollBarAutoHideTime(float autoHideTime);
/**
- 获取滚动条自动隐藏时间
- @return 自动隐藏的时间
*/
float getScrollBarAutoHideTime() const;
enum class Type
{
ABSOLUTE,
VERTICAL,
HORIZONTAL,
RELATIVE
};
/**
- 设置ScrollView的布局类型
- @param type 类型枚举(查阅Layout::Type)
*/
virtual void setLayoutType(Type type) override;
/**
- 设置ScrollView的布局类型
- @param type 类型枚举(查阅Layout::Type)
*/
virtual Type getLayoutType() const override;
/**
- 获得ScrollView控件描述
*/
virtual std::string getDescription() const override;
/**
- @lua NA
*/
virtual void onEnter() override;
/**
- 当一个小部件在一个布局中时,你可以调用这个方法来在指定的方向上获得下一个焦点部件。
- 如果小部件不在布局中,它将自行返回
*@param direction 在布局中查找下一个重点小部件的方向
*@param current 当前重点小部件
@return 布局中的下一个重点小部件
/
virtual Widget findNextFocusedWidget(FocusDirection direction, Widget current) override;