類說明
CAScrollView即滾動視圖,負責CrossApp的所有滾動操作。可支持裁剪其矩形區(qū)域以外的渲染,并讓其子數(shù)圖支持滑動操作與縮放功能。我們在使用CAScrollView時,有時需要對CAScrollView的一個事件進行監(jiān)聽,那么我要就要去實現(xiàn)CAScrollViewDelegate,并重寫其函數(shù)。
CAScrollView 屬性 (點擊屬性名可查看屬性介紹)
屬性 | 說明 |
TouchEnabledAtSubviews | 觸摸事件啟用在子視圖 |
ViewSize | 設(shè)置容器的內(nèi)部大小 |
Bounces | 設(shè)置是否滾動回彈 |
BounceHorizontal | 水平方向回彈 |
BounceVertical | 豎直方向回彈 |
ShowsHorizontalScrollIndicator | 設(shè)置是否顯示水平滾動條 |
ShowsVerticalScrollIndicator | 設(shè)置是否顯示豎直滾動條 |
MaximumZoomScale | 最大縮放比例,默認值為1 |
MinimumZoomScale | 最小縮放比例,默認值為1 |
ZoomScale | 滑動層縮放比例, 默認值為1 |
ScrollViewDelegate | 滾動視圖代表 |
ShowsScrollIndicators | 顯示滾動指示器 |
HeaderRefreshView | 頭部刷新試圖 |
FooterRefreshView | 尾部刷新試圖 |
Tracking | 是否正在滾動 |
Decelerating | 是否在慣性運動中 |
MultitouchGesture | 多點觸控手勢 |
Zooming | 是否正在進行縮放控制 |
CAScrollView 方法 (點擊方法名可查看方法介紹)
方法 | 說明 |
setContentOffset | 設(shè)置相對于視圖頂部的偏移量 |
setBackGroundImage | 設(shè)置背景圖片 |
setBackGroundColor | 設(shè)置背景顏色 |
addSubview | 添加子視圖 |
insertSubview | 插入子視圖 |
removeAllSubviews | 刪除所有子視圖 |
removeSubview | 刪除子視圖 |
removeSubviewByTag | 通過標簽刪除視圖 |
getSubviewByTag | 通過標簽獲取視圖 |
setContentOffset | 獲得內(nèi)容偏移 |
setZoomScale | 設(shè)置縮放比例 |
isReachBoundaryLeft | 是否到達左邊界 |
isReachBoundaryRight | 是否到達右邊界 |
isReachBoundaryUp | 是否到達上邊界 |
isReachBoundaryDown | 是否到達下邊界 |
endHeaderRefresh | 端頭刷新 |
endFooterRefresh | 端尾刷新 |
getContentOffset | 獲取相對于視圖頂部的偏移量 |
ccTouchBegan | 觸摸事件開始時的回調(diào)函數(shù) |
ccTouchMoved | 觸摸事件中觸點移動時的回調(diào)函數(shù) |
ccTouchEnded | 觸摸事件結(jié)束時的回調(diào)函數(shù) |
ccTouchCancelled | 觸摸非正常結(jié)束時的回調(diào)函數(shù)。(例如:電話或鎖屏) |
mouseScrollWheel | 鼠標滾輪 |
createWithFrame | 創(chuàng)建,并指定其Frame,默認Frame為(0,0,0,0) |
createWithCenter | 創(chuàng)建,并設(shè)置其Center,默認Center為(0,0,0,0) |
init | 初始化 |
startPullToHeaderRefreshView | 開始頂端刷新視圖 |
switchPCMode | 開關(guān)PC模式 |
CAScrollView即滾動視圖,負責CrossApp的所有滾動操作。可支持裁剪其矩形區(qū)域以外的渲染,并讓其子數(shù)圖支持滑動操作與縮放功能。我們在使用CAScrollView時,有時需要對CAScrollView的一個事件進行監(jiān)聽,那么我要就要去實現(xiàn)CAScrollViewDelegate,并重寫其函數(shù)。
CAScrollView相對于前面的控件來說,使用比較復(fù)雜。但我們清楚了每個函數(shù)的意義之后,便可以很清晰的構(gòu)建出我們所需要的CAScrollView。這里我們就舉一個展示文本的一個CAScrollView。
首先,我們希望能夠監(jiān)聽到CAScrollView的變化,那么我則需要去實現(xiàn)CAScrollViewDelegate,我們修該FirstViewController.h,添加要實現(xiàn)的函數(shù)如下:
#include <iostream>
#include "CrossApp.h"
USING_NS_CC;
class FirstViewController: public CAViewController ,public CAScrollViewDelegate
{
public:
FirstViewController();
virtual ~FirstViewController();
//觸摸滾動時調(diào)用
virtual void scrollViewDidMoved(CAScrollView* view);
//觸摸滾動停止時調(diào)用
virtual void scrollViewStopMoved(CAScrollView* view);
//滾動時調(diào)用(包括慣性滾動時)
virtual void scrollViewDidScroll(CAScrollView* view);
//開始滾動時調(diào)用
virtual void scrollViewWillBeginDragging(CAScrollView* view);
//結(jié)束滾動時調(diào)用
virtual void scrollViewDidEndDragging(CAScrollView* view);
//縮放時調(diào)用
virtual void scrollViewDidZoom(CAScrollView* view);
//頭部開始刷新時調(diào)用
virtual void scrollViewHeaderBeginRefreshing(CAScrollView* view);
//尾巴開始刷新時調(diào)用
virtual void scrollViewFooterBeginRefreshing(CAScrollView* view);
protected:
void viewDidLoad();
void viewDidUnload();
}
void FirstViewController::viewDidLoad()
{
// 獲得屏幕大小
DSize size = this->getView()->getBounds().size;
//設(shè)置背景顏色為黑色
this->getView()->setColor(CAColor_black);
//創(chuàng)建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));
//設(shè)置背景顏色
scrollView->setBackGroundColor(CAColor_orange);
//設(shè)置背景圖片
//scrollView->setBackGroundImage(CAImage::create("r/HelloWorld.png"));
//水平方向是否回彈
scrollView->setBounceHorizontal(false);
//豎直方向是否回彈
scrollView->setBounceVertical(true);
//是否滾動回彈,控制豎直和水平方向,默認為ture
//scrollView->setBounces(false);
scrollView->setScrollViewDelegate(this);
this->getView()->addSubview(scrollView);
//創(chuàng)建label
CALabel* label = CALabel::createWithFrame(DRect(0, 0, size.width * 0.5, 200));
//設(shè)置水平劇中
label->setTextAlignment(CATextAlignmentCenter);
//設(shè)置豎直劇中
label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
//設(shè)置字體大小
label->setFontSize(18 * CROSSAPP_ADPTATION_RATIO);
//設(shè)置文本內(nèi)容
label->setText(UTF8("CrossApp具有強大的跨平臺性能,并且具有離線能力,可以進行離線操作。對開發(fā)者和用戶入門要求較低,且功能強大。綜合效率高,開發(fā)者可以根據(jù)實際情況,考慮各方面因素來選擇合適的開發(fā)解決方案。"));
//設(shè)置文本顏色
label->setColor(CAColor_blue);
//將label添加到scrollView
scrollView->addSubview(label);
}
//觸摸滾動時調(diào)用
void FirstViewController::scrollViewDidMoved(CAScrollView* view)
{
CCLog("DidMoved-->");
}
//觸摸滾動停止時調(diào)用
void FirstViewController::scrollViewStopMoved(CAScrollView* view)
{
CCLog("StopMoved-->");
}
//滾動時調(diào)用(包括慣性滾動時)
void FirstViewController::scrollViewDidScroll(CAScrollView* view)
{
CCLog("DidMScroll-->");
}
//開始滾動時調(diào)用
void FirstViewController::scrollViewWillBeginDragging(CAScrollView* view)
{
CCLog("BeginDragging-->");
}
//結(jié)束滾動時調(diào)用
void FirstViewController::scrollViewDidEndDragging(CAScrollView* view)
{
CCLog("DidEndDragging-->");
}
//縮放時調(diào)用
void FirstViewController::scrollViewDidZoom(CAScrollView* view)
{
CCLog("DidZoom-->");
}
//頭部開始刷新時調(diào)用
void FirstViewController::scrollViewHeaderBeginRefreshing(CAScrollView* view)
{
CCLog("HeaderBeginRefreshing-->");
}
//尾巴開始刷新時調(diào)用
void FirstViewController::scrollViewFooterBeginRefreshing(CAScrollView* view)
{
CCLog("FooterBeginRefeshing-->");
}
CAScrollView 屬性介紹
類型:bool
解釋:觸摸事件啟用在子視圖。is/set{}。
類型:DSize
解釋:設(shè)置容器的內(nèi)部大小。set/get{}。
類型:bool
解釋:設(shè)置是否滾動回彈。is/set{}。
類型:bool
解釋:水平方向回彈。is/set{}。
類型:bool
解釋:豎直方向回彈。is/set{}。
ShowsHorizontalScrollIndicator
類型:bool
解釋:設(shè)置是否顯示水平滾動條。is/set{}。
類型:bool
解釋:設(shè)置是否顯示豎直滾動條。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
參數(shù):
類型 | 參數(shù)名 | 說明 |
const DPoint& | offset | 偏移量 |
bool | animated | 是否播放動畫 |
解釋:設(shè)置內(nèi)容偏移量
void setBackGroundImage(CAImage* image);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAImage* | image | 背景圖像 |
解釋:設(shè)置背景圖像
void setBackGroundColor(const CAColor4B &color);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
const CAColor4B& | color | 背景顏色 |
解釋:設(shè)置背景顏色
virtual void addSubview(CAView* subview);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAView* | subview | 子視圖 |
解釋:添加子視圖
virtual void insertSubview(CAView* subview, int z);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAView* | subview | 子視圖 |
int | z | 數(shù)量 |
解釋:插入子視圖
返回值:void
參數(shù):
解釋:刪除所有子視圖
void removeSubview(CAView* subview);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CAView* | subview | 子視圖 |
解釋:刪除子視圖
CAView* getSubviewByTag(int aTag);
返回值:CAView*
參數(shù):
類型 | 參數(shù)名 | 說明 |
int | aTag | 子視圖標簽 |
解釋:通過標簽獲取子視圖
void removeSubviewByTag(int tag);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
int | tag | 子視圖標簽 |
解釋:通過標簽刪除子視圖
CAView* getSubviewByTag(int aTag);
返回值:CAView*
參數(shù):
類型 | 參數(shù)名 | 說明 |
int | aTag | 子視圖標簽 |
解釋:過標簽獲取子視圖
返回值:DPoint
參數(shù):
解釋:獲得內(nèi)容偏移量
void setZoomScale(float zoom);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
float | zoom | 縮放比例 |
解釋:設(shè)置縮放比例
virtual bool isReachBoundaryLeft();
返回值:bool
參數(shù):
解釋:是否到達左邊界
virtual bool isReachBoundaryRight();
返回值:bool
參數(shù):
解釋:是否到達右邊界
virtual bool isReachBoundaryUp();
返回值:bool
參數(shù):
解釋:是否到達上邊界
virtual bool isReachBoundaryDown();
返回值:bool
參數(shù):
解釋:是否到達下邊界
返回值:void
參數(shù):
解釋:端頭刷新
返回值:void
參數(shù):
解釋:端尾刷新
返回值:DPoint
參數(shù):
解釋:獲取相對于視圖頂部的偏移量
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual bool
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 觸摸傳遞對象 |
CAEvent* | pEven | 此參數(shù)待定 |
解釋:觸摸事件開始時的回調(diào)函數(shù)
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 觸摸傳遞對象 |
CAEvent* | pEven | 此參數(shù)待定 |
解釋:觸摸事件中觸點移動時的回調(diào)函數(shù)
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 觸摸傳遞對象 |
CAEvent* | pEven | 此參數(shù)待定 |
解釋:觸摸事件結(jié)束時的回調(diào)函數(shù)
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 觸摸傳遞對象 |
CAEvent* | pEven | 此參數(shù)待定 |
解釋:觸摸非正常結(jié)束時的回調(diào)函數(shù)。(例如:電話或鎖屏)
virtual void mouseScrollWheel(CATouch* pTouch, float off_x, float off_y, CAEvent* pEvent);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
CATouch* | pTouch | 觸摸 |
float | off_x | x坐標偏移量 |
float | off_y | y坐標偏移量 |
CAEvent* | pEvent | 事件 |
解釋:鼠標滾輪
static CAScrollView* createWithFrame(const DRect& rect);
返回值:static CAScrollView*
參數(shù):
類型 | 參數(shù)名 | 說明 |
const DRect& | rect | 區(qū)域大小 |
解釋:創(chuàng)建,并指定其Frame,默認Frame為(0,0,0,0)
static CAScrollView* createWithCenter(const DRect& rect);
返回值:static CAScrollView*
參數(shù):
類型 | 參數(shù)名 | 說明 |
const DRect& | rect | 中心點的位置及大小 |
解釋:創(chuàng)建,并設(shè)置其Center,默認Center為(0,0,0,0)
返回值:virtual bool
參數(shù):
解釋:初始化
void startPullToHeaderRefreshView();
返回值:void
參數(shù):
解釋:開始頂端刷新視圖
virtual void switchPCMode(bool var);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說明 |
bool | var | 開關(guān) |
解釋:開關(guān)PC模式
更多建議: