CAButton(按鈕)

2018-08-29 16:10 更新

類說明

在app開放中按鈕是最常用的控件之一,大家對Button的需要也多種多樣,CrossApp提供了CAButton,其使用思路主要是根據(jù)狀態(tài)設(shè)置來完成的。

CAButton按鈕類,主要為了接收用戶的點擊操作,從而觸發(fā)特定的事件。


CAButton 屬性 (點擊屬性名可查看屬性介紹)

屬性說明
AllowsSelected是否可以選擇
Selected是否被選擇
TouchClick是否被觸摸點擊


CAButton 方法 (點擊屬性名可查看屬性介紹)

方法說明
create創(chuàng)建
createWithFrame創(chuàng)建,并指定其Frame
createWithCenter創(chuàng)建,并指定其Center
init初始化
setBackGroundViewForState設(shè)置Button的背景View
getBackGroundViewForState獲取Button的背景View
setImageForState設(shè)置Button的圖片(不支持九宮格)
getImageForState獲取Button的圖片(不支持九宮格)
setTitleForState設(shè)置Button標(biāo)題的顯示文本
getTitleForState獲取Button標(biāo)題的顯示文本
setImageColorForState設(shè)置Button的圖像顏色和狀態(tài)
setTitleColorForState設(shè)置Button的標(biāo)題顏色和狀態(tài)
setTitleFontName設(shè)置Button文本的字體
setImageOffset設(shè)置圖像偏移量
setImageSize設(shè)置圖像大小
setTitleOffset設(shè)置標(biāo)題偏移量
setTitleLabelSize設(shè)置標(biāo)題標(biāo)簽大小
setTitleFontSize設(shè)置標(biāo)題字體大小
setControlState設(shè)置狀態(tài)
interruptTouchState中斷接觸狀態(tài)
ccTouchBegan觸摸事件開始時的回調(diào)函數(shù)
ccTouchMoved觸摸事件中觸點移動時的回調(diào)函數(shù)
ccTouchEnded觸摸事件結(jié)束時的回調(diào)函數(shù)
ccTouchCancelled觸摸非正常結(jié)束時的回調(diào)函數(shù)。(例如:電話或鎖屏)
addTarget添加回調(diào)事件
removeTarget刪除回調(diào)事件
removeAllTargets刪除所有回調(diào)事件


/*
    創(chuàng)建一個Button
    參數(shù)類型CAButtonType:CAButtonTypeCustom、CAButtonTypeSquareRect、CAButtonTypeRoundedRect
    CAButtonTypeCustom:默認看不見任何效果,需要自己定義效果
    CAButtonTypeSquareRect:矩形邊框類型
    CAButtonTypeRoundedRect:圓角邊框類型
*/
CAButton* firstButton = CAButton::create(CAButtonTypeRoundedRect);
 
/*
    設(shè)置Button的狀態(tài)顯示文本
    CAControlStateNormal:缺省狀態(tài)
    CAControlStateHighlighted:高亮狀態(tài)
    CAControlStateDisabled:禁用狀態(tài)
    CAControlStateSelected:選中狀態(tài)
    CAControlStateAll:全部狀態(tài)
*/
firstButton->setTitleForState(CAControlStateAll,"Button");
 
/*
    設(shè)置Button的狀態(tài)顯示文本的顏色
*/
firstButton->setTitleColorForState(CAControlStateAll, ccc4(0, 0, 0, 255));
 
//設(shè)置Button文本的字體
firstButton->setTitleFontName("宋體");
 
/*
    設(shè)置Button的狀態(tài)的背景View
*/
//九宮格圖
//firstButton->setBackGroundViewForState(CAControlStateAll,CAScale9ImageView::createWithImage("HelloWorld.png"));
 
//設(shè)置純色View
//firstButton->setBackGroundViewForState(CAControlStateAll, CAView::createWithColor(CAColor_red));
 
/*
    設(shè)置Button的狀態(tài)的圖片(不支持九宮格)
*/
//firstButton->setImageForState(CAControlStateAll,CAImage::create("HelloWorld.png"));
 
/*
    設(shè)置Button的狀態(tài)
*/
//firstButton->setControlState(CAControlStateHighlighted);
 
/*
    設(shè)置Frame(如果不設(shè)置Frame,默認是不顯示的)
*/
firstButton->setFrame(DRect(100,100,200,80));
 
//添加到繪制
this->getView()->addSubview(firstButton);
 
/*
    設(shè)置Button的監(jiān)聽
    CAControlEventTouchDown:按下按鈕響應(yīng)
    CAControlEventTouchDownRepeat:(未實現(xiàn)預(yù)留)雙擊時響應(yīng)
    CAControlEventTouchMoved:觸點在Button范圍內(nèi)移動
    CAControlEventTouchMovedOutSide:觸點移動到Button范圍外
    CAControlEventTouchUpInSide:觸點在Button范圍內(nèi)抬起
    CAControlEventTouchUpSide:Button抬起
    CAControlEventTouchValueChanged:此狀態(tài)在CAButton無效,在CASlider中響應(yīng)
*/
firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackDown), CAControlEventTouchDown);
 
//此狀態(tài)6.0版本未實現(xiàn)
//firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackDownRepeat), CAControlEventTouchDownRepeat);
 
firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackMoved), CAControlEventTouchMoved);
 
firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackMovedOutSide), CAControlEventTouchMovedOutSide);
 
firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackUpInSide), CAControlEventTouchUpInSide);
 
firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackUpSide), CAControlEventTouchUpSide);
 
//此狀態(tài)6.0版本 Button無效
//firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackValueChanged), CAControlEventTouchValueChanged);
 
/*
    中斷監(jiān)聽
*/
//firstButton->interruptTouchState();

監(jiān)聽的回調(diào)函數(shù)也很簡單:有兩個參數(shù):CAControl* 和DPoint

CAControl是Button本身

DPoint是觸點的坐標(biāo)

void FirstViewController::callbackDown(CAControl* control, DPoint point)
{
        CCLog("callbackDown()-->");
}
 
void FirstViewController::callbackDownRepeat(CAControl* control, DPoint point)
{
        CCLog("callbackDownRepeat()-->");
}
 
void FirstViewController::callbackMoved(CAControl* control, DPoint point)
{
        CCLog("callbackMoved()-->");
}
 
void FirstViewController::callbackMovedOutSide(CAControl* control, DPoint point)
{
        CCLog("callbackMovedOutSide()-->");
}
 
void FirstViewController::callbackUpInSide(CAControl* control, DPoint point)
{
        CCLog("callbackUpInSide()-->");
        //((CAButton*)control)->setTitleForState(CAControlStateAll, "changed");
}
 
void FirstViewController::callbackUpSide(CAControl* control, DPoint point)
{
        CCLog("callbackUpSide()-->");
}
 
void FirstViewController::callbackValueChanged(CAControl* control, DPoint point)
{
        CCLog("callbackValueChanged()-->");
}

CAButton 屬性說明

AllowsSelected

類型:bool

解釋:是否可以選擇。is/set{}。


Selected

類型:bool

解釋:是否被選擇。is{}。


TouchClick

類型:bool

解釋:是否被觸摸點擊。is{}。


CAButton 方法說明

static CAButton* create(const CAButtonType& buttonType);

返回值:static CAButton*

參數(shù):

類型
參數(shù)名說明
const CAButtonType&buttonType按鈕類型

解釋:創(chuàng)建

typedef enum
{
    CAButtonTypeCustom = 0,     默認看不見任何效果,需要自己定義效果
    CAButtonTypeSquareRect,     矩形邊框類型
    CAButtonTypeRoundedRect,    圓角邊框類型
} CAButtonType;

static CAButton* createWithFrame(const DRect& rect, const CAButtonType& buttonType);

返回值:static CAButton*

參數(shù):

類型
參數(shù)名說明
const DRect&rect區(qū)域大小
 const CAButtonType&buttonType按鈕類型

解釋:創(chuàng)建,并指定其Frame

typedef enum
{
    CAButtonTypeCustom = 0,     默認看不見任何效果,需要自己定義效果
    CAButtonTypeSquareRect,     矩形邊框類型
    CAButtonTypeRoundedRect,    圓角邊框類型
} CAButtonType;


static CAButton* createWithCenter(const DRect& rect, const CAButtonType& buttonType);

返回值:static CAButton*

參數(shù):

類型
參數(shù)名說明
const DRect&rect中心點的位置及大小
 const CAButtonType&buttonType按鈕類型

解釋:創(chuàng)建,并指定其Center

typedef enum
{
    CAButtonTypeCustom = 0,     默認看不見任何效果,需要自己定義效果
    CAButtonTypeSquareRect,     矩形邊框類型
    CAButtonTypeRoundedRect,    圓角邊框類型
} CAButtonType;


virtual bool init();

返回值:virtual bool

參數(shù):

解釋:初始化


void setBackGroundViewForState(const CAControlState& controlState, CAView *var);

返回值:void

參數(shù):

類型
參數(shù)名說明
const CAControlState&controlStateButton的狀態(tài)
CAView*var圖像

解釋:設(shè)置Button的狀態(tài)的背景View

typedef enum
{
    CAControlStateNormal:       缺省狀態(tài)
    CAControlStateHighlighted:  高亮狀態(tài)
    CAControlStateDisabled:     禁用狀態(tài)
    CAControlStateSelected:     選中狀態(tài)
    CAControlStateAll:          全部狀態(tài)
}CAControlState;


CAView* getBackGroundViewForState(const CAControlState& controlState);

返回值:CAView*

參數(shù):

類型
參數(shù)名說明
const CAControlState&controlStateButton的狀態(tài)

解釋:獲取Button的狀態(tài)的背景View

typedef enum
{
    CAControlStateNormal:       缺省狀態(tài)
    CAControlStateHighlighted:  高亮狀態(tài)
    CAControlStateDisabled:     禁用狀態(tài)
    CAControlStateSelected:     選中狀態(tài)
    CAControlStateAll:          全部狀態(tài)
}CAControlState;

void setImageForState(const CAControlState& controlState, CAImage* var);

返回值:void

參數(shù):

類型
參數(shù)名說明
const CAControlState&controlStateButton的狀態(tài)
CAImage*var圖像

解釋:設(shè)置Button的狀態(tài)和圖像(不支持九宮格)

typedef enum
{
    CAControlStateNormal:       缺省狀態(tài)
    CAControlStateHighlighted:  高亮狀態(tài)
    CAControlStateDisabled:     禁用狀態(tài)
    CAControlStateSelected:     選中狀態(tài)
    CAControlStateAll:          全部狀態(tài)
}CAControlState;

CAImage* getImageForState(const CAControlState& controlState);

返回值:CAImage*

參數(shù):

類型
參數(shù)名說明
const CAControlState&controlStateButton的狀態(tài)

解釋:獲取Button的狀態(tài)和圖像(不支持九宮格)

typedef enum
{
    CAControlStateNormal:       缺省狀態(tài)
    CAControlStateHighlighted:  高亮狀態(tài)
    CAControlStateDisabled:     禁用狀態(tài)
    CAControlStateSelected:     選中狀態(tài)
    CAControlStateAll:          全部狀態(tài)
}CAControlState;

void setTitleForState(const CAControlState& controlState, const std::string& var);

返回值:void

參數(shù):

類型
參數(shù)名說明
const CAControlState&controlStateButton的狀態(tài)
const std::string&var文本

解釋:設(shè)置Button標(biāo)題的顯示文本

typedef enum
{
    CAControlStateNormal:       缺省狀態(tài)
    CAControlStateHighlighted:  高亮狀態(tài)
    CAControlStateDisabled:     禁用狀態(tài)
    CAControlStateSelected:     選中狀態(tài)
    CAControlStateAll:          全部狀態(tài)
}CAControlState;

const std::string& getTitleForState(const CAControlState& controlState);

返回值:const std::string&

參數(shù):

類型
參數(shù)名說明
const CAControlState&controlStateButton的狀態(tài)

解釋:獲取Button標(biāo)題的顯示文本

typedef enum
{
    CAControlStateNormal:       缺省狀態(tài)
    CAControlStateHighlighted:  高亮狀態(tài)
    CAControlStateDisabled:     禁用狀態(tài)
    CAControlStateSelected:     選中狀態(tài)
    CAControlStateAll:          全部狀態(tài)
}CAControlState;

void setImageColorForState(const CAControlState& controlState, const CAColor4B& var);

返回值:void

參數(shù):

類型
參數(shù)名說明
const CAControlState&controlStateButton的狀態(tài)
const CAColor4B&var顏色

解釋:設(shè)置Button的圖像顏色和狀態(tài)

typedef enum
{
    CAControlStateNormal:       缺省狀態(tài)
    CAControlStateHighlighted:  高亮狀態(tài)
    CAControlStateDisabled:     禁用狀態(tài)
    CAControlStateSelected:     選中狀態(tài)
    CAControlStateAll:          全部狀態(tài)
}CAControlState;

void setTitleColorForState(const CAControlState& controlState, const CAColor4B& var);

返回值:void

參數(shù):

類型
參數(shù)名說明
const CAControlState&controlStateButton的狀態(tài)
const CAColor4B&var顏色

解釋:設(shè)置Button的標(biāo)題顏色和狀態(tài)

typedef enum
{
    CAControlStateNormal:       缺省狀態(tài)
    CAControlStateHighlighted:  高亮狀態(tài)
    CAControlStateDisabled:     禁用狀態(tài)
    CAControlStateSelected:     選中狀態(tài)
    CAControlStateAll:          全部狀態(tài)
}CAControlState;

void setTitleFontName(const std::string& var);

返回值:void

參數(shù):

類型
參數(shù)名說明
const std::string&var文本

解釋:設(shè)置Button文本的字體


void setImageOffset(const DSize& offset);

返回值:void

參數(shù):

類型
參數(shù)名說明
const DSize&offset偏移量

解釋:設(shè)置圖像偏移


void setImageSize(const DSize& size);

返回值:void

參數(shù):

類型
參數(shù)名說明
const DSize&size大小

解釋:設(shè)置圖像大小


void setTitleOffset(const DSize& offset);

返回值:void

參數(shù):

類型
參數(shù)名說明
const DSize&offset偏移量

解釋:設(shè)置標(biāo)題偏移量


void setTitleLabelSize(const DSize& size);

返回值:void

參數(shù):

類型
參數(shù)名說明
const DSize&size大小

解釋:設(shè)置標(biāo)題標(biāo)簽大小


void setTitleFontSize(float fontSize);

返回值:void

參數(shù):

類型
參數(shù)名說明
floatfontSize字體大小

解釋:設(shè)置標(biāo)題字體大小


virtual void setControlState(const CAControlState& var);

返回值:virtual void

參數(shù):

類型
參數(shù)名說明
const CAControlState&var狀態(tài)

解釋:設(shè)置狀態(tài)

typedef enum
{
    CAControlStateNormal:       缺省狀態(tài)
    CAControlStateHighlighted:  高亮狀態(tài)
    CAControlStateDisabled:     禁用狀態(tài)
    CAControlStateSelected:     選中狀態(tài)
    CAControlStateAll:          全部狀態(tài)
}CAControlState;

void interruptTouchState();

返回值:void

參數(shù):

解釋:中斷接觸狀態(tài)


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ù)。(例如:電話或鎖屏)


using CAControl::addTarget;

返回值:using

參數(shù):

解釋:添加回調(diào)事件


using CAControl::removeTarget;

返回值:using

參數(shù):

解釋:刪除回調(diào)事件


using CAControl::removeAllTargets;

返回值:using

參數(shù):

解釋:刪除所有回調(diào)事件


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號