類說明
在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 屬性說明
類型:bool
解釋:是否可以選擇。is/set{}。
類型:bool
解釋:是否被選擇。is{}。
類型: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
參數(shù):
解釋:初始化
void setBackGroundViewForState(const CAControlState& controlState, CAView *var);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
const CAControlState& | controlState | Button的狀態(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& | controlState | Button的狀態(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
參數(shù):
類型 | 參數(shù)名 | 說明 |
const CAControlState& | controlState | Button的狀態(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*
參數(shù):
類型 | 參數(shù)名 | 說明 |
const CAControlState& | controlState | Button的狀態(tài) |
解釋:獲取Button的狀態(tài)和圖像(不支持九宮格)
typedef enum
{
CAControlStateNormal: 缺省狀態(tài)
CAControlStateHighlighted: 高亮狀態(tài)
CAControlStateDisabled: 禁用狀態(tài)
CAControlStateSelected: 選中狀態(tài)
CAControlStateAll: 全部狀態(tài)
}CAControlState;
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
const CAControlState& | controlState | Button的狀態(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&
參數(shù):
類型 | 參數(shù)名 | 說明 |
const CAControlState& | controlState | Button的狀態(tài) |
解釋:獲取Button標(biāo)題的顯示文本
typedef enum
{
CAControlStateNormal: 缺省狀態(tài)
CAControlStateHighlighted: 高亮狀態(tài)
CAControlStateDisabled: 禁用狀態(tài)
CAControlStateSelected: 選中狀態(tài)
CAControlStateAll: 全部狀態(tài)
}CAControlState;
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說明 |
const CAControlState& | controlState | Button的狀態(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
參數(shù):
類型 | 參數(shù)名 | 說明 |
const CAControlState& | controlState | Button的狀態(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
參數(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ù)名 | 說明 |
float | fontSize | 字體大小 |
解釋:設(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
參數(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
參數(shù):
解釋:添加回調(diào)事件
using CAControl::removeTarget;
返回值:using
參數(shù):
解釋:刪除回調(diào)事件
using CAControl::removeAllTargets;
返回值:using
參數(shù):
解釋:刪除所有回調(diào)事件
更多建議: