类说明
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();
     
}
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 属性介绍
类型:bool
解释:触摸事件启用在子视图。is/set{}。
类型:DSize
解释:设置容器的内部大小。set/get{}。
类型:bool
解释:设置是否滚动回弹。is/set{}。
类型:bool
解释:水平方向回弹。is/set{}。
类型:bool
解释:竖直方向回弹。is/set{}。
ShowsHorizontalScrollIndicator
类型:bool
解释:设置是否显示水平滚动条。is/set{}。
类型:bool
解释:设置是否显示竖直滚动条。is/set{}。
类型:float
解释:最大缩放比例,默认值为1。set/get{}。
类型:float
解释:最小缩放比例,默认值为1。set/get{}。
类型:float
解释: 滑动层缩放比例, 默认值为1。get{}。
类型:CAScrollViewDelegate*
解释:滚动视图代表。set/get{}。
类型:bool
解释:显示滚动指示器。is/set{}。
类型:CAPullToRefreshView*
解释:头部刷新试图。set/get{}。
类型:CAPullToRefreshView*
解释:尾部刷新试图。set/get{}。
类型:bool
解释:查看 ScrollView 是否正在滚动。is{}。
类型:bool
解释:查看 ScrollView 是否正在进行缩放控制。is{}。
类型:bool
解释:查看 ScrollView 是否在惯性运动中。is{}。
类型: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
参数:
解释:删除所有子视图
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
参数:
解释:获得内容偏移量
void setZoomScale(float zoom);
返回值:void
参数:
| 类型 | 参数名 | 说明 | 
| float | zoom | 缩放比例 | 
解释:设置缩放比例
virtual bool isReachBoundaryLeft();
返回值:bool
参数:
解释:是否到达左边界
virtual bool isReachBoundaryRight();
返回值:bool
参数:
解释:是否到达右边界
virtual bool isReachBoundaryUp();
返回值:bool
参数:
解释:是否到达上边界
virtual bool isReachBoundaryDown();
返回值:bool
参数:
解释:是否到达下边界
返回值:void
参数:
解释:端头刷新
返回值:void
参数:
解释:端尾刷新
返回值: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
参数:
解释:初始化
void startPullToHeaderRefreshView();
返回值:void
参数:
解释:开始顶端刷新视图
virtual void switchPCMode(bool var);
返回值:virtual void
参数:
| 类型 | 参数名 | 说明 | 
| bool | var | 开关 | 
解释:开关PC模式