JSRUN 用代码说话

CAScrollView(滚动视图)

编辑教程

CAScrollView(滚动视图)

类说明

CAScrollView即滚动视图,负责CrossApp的所有滚动操作。可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。

在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。

CAScrollView 属性

属性 说明
TouchEnabledAtSubviews 触摸事件启用在子视图
ViewSize 设置容器的内部大小
Bounces 设置是否滚动回弹
BounceHorizontal 水平方向回弹
BounceVertical 竖直方向回弹
ShowsHorizontalScrollIndicator 设置是否显示水平滚动条
ShowsVerticalScrollIndicator 设置是否显示竖直滚动条
MaximumZoomScale 最大缩放比例,默认值为1
MinimumZoomScale 最小缩放比例,默认值为1
ZoomScale 滑动层缩放比例, 默认值为1
ScrollViewDelegate 滚动视图代表
ShowsScrollIndicators 显示滚动指示器
HeaderRefreshView 头部刷新试图
FooterRefreshView 尾部刷新试图
Tracking 是否正在滚动
Decelerating 是否在惯性运动中
MultitouchGesture 多点触控手势
Zooming 是否正在进行缩放控制

CAScrollView 方法

方法 说明
setContentOffset 设置相对于视图顶部的偏移量
setBackGroundImage 设置背景图片
setBackGroundColor 设置背景颜色
addSubview 添加子视图
insertSubview 插入子视图
removeAllSubviews 删除所有子视图
removeSubview 删除子视图
removeSubviewByTag 通过标签删除视图
getSubviewByTag 通过标签获取视图
setContentOffset 获得内容偏移
setZoomScale 设置缩放比例
isReachBoundaryLeft 是否到达左边界
isReachBoundaryRight 是否到达右边界
isReachBoundaryUp 是否到达上边界
isReachBoundaryDown 是否到达下边界
endHeaderRefresh 端头刷新
endFooterRefresh 端尾刷新
getContentOffset 获取相对于视图顶部的偏移量
ccTouchBegan 触摸事件开始时的回调函数
ccTouchMoved 触摸事件中触点移动时的回调函数
ccTouchEnded 触摸事件结束时的回调函数
ccTouchCancelled 触摸非正常结束时的回调函数。(例如:电话或锁屏)
mouseScrollWheel 鼠标滚轮
createWithFrame 创建,并指定其Frame,默认Frame为(0,0,0,0)
createWithCenter 创建,并设置其Center,默认Center为(0,0,0,0)
init 初始化
startPullToHeaderRefreshView 开始顶端刷新视图
switchPCMode 开关PC模式

CAScrollView即滚动视图,负责CrossApp的所有滚动操作。 可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。

在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。

CAScrollView相对于前面的控件来说,使用比较复杂。但我们清楚了每个函数的意义之后,便可以很清晰的构建出我们所需要的CAScrollView。这里我们就举一个展示文本的一个CAScrollView。

首先,我们希望能够监听到CAScrollView的变化,那么我则需要去实现CAScrollViewDelegate,我们修该FirstViewController.h,添加要实现的函数如下:

#include <iostream>
#include "CrossApp.h"

USING_NS_CC;

class FirstViewController: public CAViewController ,public CAScrollViewDelegate
{ 
public:

    FirstViewController();
    virtual ~FirstViewController();

    //触摸滚动时调用
    virtual void scrollViewDidMoved(CAScrollView* view);

    //触摸滚动停止时调用
    virtual void scrollViewStopMoved(CAScrollView* view);

    //滚动时调用(包括惯性滚动时)
    virtual void scrollViewDidScroll(CAScrollView* view);

    //开始滚动时调用
    virtual void scrollViewWillBeginDragging(CAScrollView* view);

    //结束滚动时调用
    virtual void scrollViewDidEndDragging(CAScrollView* view);

    //缩放时调用
    virtual void scrollViewDidZoom(CAScrollView* view);

    //头部开始刷新时调用
    virtual void scrollViewHeaderBeginRefreshing(CAScrollView* view);

    //尾巴开始刷新时调用
    virtual void scrollViewFooterBeginRefreshing(CAScrollView* view);

protected:

    void viewDidLoad();

    void viewDidUnload();

}

然后就要在FirstViewController.cpp中去实现这写代理函数:

void FirstViewController::viewDidLoad()
{
    // 获得屏幕大小
    DSize size  = this->getView()->getBounds().size;

    //设置背景颜色为黑色
    this->getView()->setColor(CAColor_black);

    //创建scrollView
    CAScrollView* scrollView = CAScrollView::createWithCenter(DRect(size.width*0.5,size.height*0.5 - 270,size.width * 0.5, 100));

    //CACScrollView容器的大小
    scrollView->setViewSize(DSize(size.width, 200));

    //设置背景颜色
    scrollView->setBackGroundColor(CAColor_orange);

    //设置背景图片
    //scrollView->setBackGroundImage(CAImage::create("r/HelloWorld.png"));

    //水平方向是否回弹
    scrollView->setBounceHorizontal(false);

    //竖直方向是否回弹
    scrollView->setBounceVertical(true);

    //是否滚动回弹,控制竖直和水平方向,默认为ture
    //scrollView->setBounces(false);
    scrollView->setScrollViewDelegate(this);

    this->getView()->addSubview(scrollView);

    //创建label
    CALabel* label = CALabel::createWithFrame(DRect(0, 0, size.width * 0.5, 200));

    //设置水平剧中
    label->setTextAlignment(CATextAlignmentCenter);

    //设置竖直剧中
    label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);

    //设置字体大小
    label->setFontSize(18 * CROSSAPP_ADPTATION_RATIO);

    //设置文本内容
    label->setText(UTF8("CrossApp具有强大的跨平台性能,并且具有离线能力,可以进行离线操作。对开发者和用户入门要求较低,且功能强大。综合效率高,开发者可以根据实际情况,考虑各方面因素来选择合适的开发解决方案。"));

    //设置文本颜色
    label->setColor(CAColor_blue);

    //将label添加到scrollView
    scrollView->addSubview(label);
}

//触摸滚动时调用
void FirstViewController::scrollViewDidMoved(CAScrollView* view)
{
    CCLog("DidMoved-->");
}

//触摸滚动停止时调用
void FirstViewController::scrollViewStopMoved(CAScrollView* view)
{
    CCLog("StopMoved-->");
}

//滚动时调用(包括惯性滚动时)
void FirstViewController::scrollViewDidScroll(CAScrollView* view)
{
    CCLog("DidMScroll-->");
}

//开始滚动时调用
void FirstViewController::scrollViewWillBeginDragging(CAScrollView* view)
{
    CCLog("BeginDragging-->");
}

//结束滚动时调用
void FirstViewController::scrollViewDidEndDragging(CAScrollView* view)
{
    CCLog("DidEndDragging-->");
}

//缩放时调用
void FirstViewController::scrollViewDidZoom(CAScrollView* view)
{
    CCLog("DidZoom-->");
}

//头部开始刷新时调用
void FirstViewController::scrollViewHeaderBeginRefreshing(CAScrollView* view)
{
    CCLog("HeaderBeginRefreshing-->");
}

//尾巴开始刷新时调用
void FirstViewController::scrollViewFooterBeginRefreshing(CAScrollView* view)
{
    CCLog("FooterBeginRefeshing-->");
}

CAScrollView 属性介绍

TouchEnabledAtSubviews

类型:bool

解释:触摸事件启用在子视图。is/set{}。

ViewSize

类型:DSize

解释:设置容器的内部大小。set/get{}。

Bounces

类型:bool

解释:设置是否滚动回弹。is/set{}。

BounceHorizontal

类型:bool

解释:水平方向回弹。is/set{}。

BounceVertical

类型:bool

解释:竖直方向回弹。is/set{}。

ShowsHorizontalScrollIndicator

类型:bool

解释:设置是否显示水平滚动条。is/set{}。

ShowsVerticalScrollIndicator

类型:bool

解释:设置是否显示竖直滚动条。is/set{}。

MaximumZoomScale

类型:float

解释:最大缩放比例,默认值为1。set/get{}。

MinimumZoomScale

类型:float

解释:最小缩放比例,默认值为1。set/get{}。

ZoomScale

类型:float

解释: 滑动层缩放比例, 默认值为1。get{}。

ScrollViewDelegate

###

类型:CAScrollViewDelegate*

解释:滚动视图代表。set/get{}。

ShowsScrollIndicators

类型:bool

解释:显示滚动指示器。is/set{}。

HeaderRefreshView

类型:CAPullToRefreshView*

解释:头部刷新试图。set/get{}。

FooterRefreshView

类型:CAPullToRefreshView*

解释:尾部刷新试图。set/get{}。

Tracking

类型:bool

解释:查看 ScrollView 是否正在滚动。is{}。

Zooming

类型:bool

解释:查看 ScrollView 是否正在进行缩放控制。is{}。

Decelerating

###

类型:bool

解释:查看 ScrollView 是否在惯性运动中。is{}。

MultitouchGesture

类型:MultitouchGesture

解释:多点触控手势,set/get{}。


CAScrollView 方法介绍

void setContentOffset(const DPoint& offset, bool animated);

###

返回值:void

参数:

类型 参数名 说明
const DPoint& offset 偏移量
bool animated 是否播放动画

解释:设置内容偏移量

void setBackGroundImage(CAImage* image);

返回值:void

参数:

类型 参数名 说明
CAImage* image 背景图像

解释:设置背景图像

void setBackGroundColor(const CAColor4B &color);

返回值:void

参数:

类型 参数名 说明
const CAColor4B& color 背景颜色

解释:设置背景颜色

virtual void addSubview(CAView* subview);

返回值:void

参数:

类型 参数名 说明
CAView* subview 子视图

解释:添加子视图

virtual void insertSubview(CAView* subview, int z);

返回值:void

参数:

类型 参数名 说明
CAView* subview 子视图
int z 数量

解释:插入子视图

void removeAllSubviews();

返回值:void

参数:

解释:删除所有子视图

void removeSubview(CAView* subview);

返回值:void

参数:

类型 参数名 说明
CAView* subview 子视图

解释:删除子视图

CAView* getSubviewByTag(int aTag);

返回值:CAView*

参数:

类型 参数名 说明
int aTag 子视图标签

解释:通过标签获取子视图

void removeSubviewByTag(int tag);

返回值:void

参数:

类型 参数名 说明
int tag 子视图标签

解释:通过标签删除子视图

CAView* getSubviewByTag(int aTag);

返回值:CAView*

参数:

类型 参数名 说明
int aTag 子视图标签

解释:过标签获取子视图

DPoint getContentOffset();

返回值:DPoint

参数:

解释:获得内容偏移量

void setZoomScale(float zoom);

返回值:void

参数:

类型 参数名 说明
float zoom 缩放比例

解释:设置缩放比例

virtual bool isReachBoundaryLeft();

返回值:bool

参数:

解释:是否到达左边界

virtual bool isReachBoundaryRight();

返回值:bool

参数:

解释:是否到达右边界

virtual bool isReachBoundaryUp();

返回值:bool

参数:

解释:是否到达上边界

virtual bool isReachBoundaryDown();

返回值:bool

参数:

解释:是否到达下边界

void endHeaderRefresh();

返回值:void

参数:

解释:端头刷新

void endFooterRefresh();

返回值:void

参数:

解释:端尾刷新

DPoint getContentOffset();

返回值:DPoint

参数:

解释:获取相对于视图顶部的偏移量

virtual bool ccTouchBegan(CATouch pTouch, CAEvent pEvent);

返回值:virtual bool

参数:

类型 参数名 说明
CATouch* pTouch 触摸传递对象
CAEvent* pEven 此参数待定

解释:触摸事件开始时的回调函数

virtual void ccTouchMoved(CATouch pTouch, CAEvent pEvent);

返回值:virtual void

参数:

类型 参数名 说明
CATouch* pTouch 触摸传递对象
CAEvent* pEven 此参数待定

解释:触摸事件中触点移动时的回调函数

virtual void ccTouchEnded(CATouch pTouch, CAEvent pEvent);

返回值:virtual void

参数:

类型 参数名 说明
CATouch* pTouch 触摸传递对象
CAEvent* pEven 此参数待定

解释:触摸事件结束时的回调函数

virtual void ccTouchCancelled(CATouch pTouch, CAEvent pEvent);

返回值:virtual void

参数:

类型 参数名 说明
CATouch* pTouch 触摸传递对象
CAEvent* pEven 此参数待定

解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)

virtual void mouseScrollWheel(CATouch pTouch, float off_x, float off_y, CAEvent pEvent);

返回值:virtual void

参数:

类型 参数名 说明
CATouch* pTouch 触摸
float off_x x坐标偏移量
float off_y y坐标偏移量
CAEvent* pEvent 事件

解释:鼠标滚轮

static CAScrollView* createWithFrame(const DRect& rect);

返回值:static CAScrollView*

参数:

类型 参数名 说明
const DRect& rect 区域大小

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

static CAScrollView* createWithCenter(const DRect& rect);

返回值:static CAScrollView*

参数:

类型 参数名 说明
const DRect& rect 中心点的位置及大小

解释:创建,并设置其Center,默认Center为(0,0,0,0)

virtual bool init();

返回值:virtual bool

参数:

解释:初始化

void startPullToHeaderRefreshView();

返回值:void

参数:

解释:开始顶端刷新视图

virtual void switchPCMode(bool var);

返回值:virtual void

参数:

类型 参数名 说明
bool var 开关

解释:开关PC模式

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟