cocos2d-x按鈕CCControlButton的用法

轉載請註明,原文地址  http://blog.csdn.net/musicvs/article/details/8242963ide


1. 按鈕建立函數


[cpp]    view plain   copy   print   ?  this

  1. /* 正常狀態下的按鈕圖片 */  spa

  2.     CCScale9Sprite* btnNormal = CCScale9Sprite::create("button.png");  .net

  3.   

  4.     /* 點擊狀態下的按鈕圖片 */  指針

  5.     CCScale9Sprite* btnDown = CCScale9Sprite::create("buttonHighlighted.png");  orm

  6.   

  7.     /* 按鈕標題 */  blog

  8.     CCLabelTTF *title = CCLabelTTF::create("Touch Me!3324234""Marker Felt", 30);  事件

  9.   

  10.     /* 按鈕的大小會根據標題自動調整 */  圖片

  11.     CCControlButton* controlBtn = CCControlButton::create(title, btnNormal);  

  12.   

  13.     /* 設置按鈕按下時的圖片 */  

  14.     controlBtn->setBackgroundSpriteForState(btnDown, CCControlStateSelected);  

  15.     controlBtn->setPosition(ccp(200, 200));  

  16.     this->addChild(controlBtn);  


 

其實代碼很簡單,兩張圖片,分別是按鈕正常狀態和點擊狀態圖片,固然,她們都是九妹圖片~

而後是一個標題標籤,固然了,若是按鈕沒有標題,呢誰知道是什麼做用呢~

最後要界面一個新的傢伙: CCControlButton

我是這麼理解的,CCControlButton它只是一個空殼,它具有不少按鈕所須要的功能(點擊事件什麼的),而後九妹圖片和標題標籤是內容,把內容添加到這個空殼裏,一個按鈕就誕生了:

可是有一點要注意,按鈕的大小是根據標籤內容進行縮放的,那,若是我想讓按鈕的大小固定呢?畢竟不是全部人都喜歡變化~

很簡單,就一句話:

[cpp]    view plain   copy   print   ?  

  1. /* 強制設置按鈕大小,若是按鈕標題大小超過這個範圍,則會自動擴大 */  

  2.     controlBtn->setPreferredSize(CCSize(300, 50));  


 

搞定~

2. 按鈕事件

按鈕怎麼可能少了點擊事件呢?~這個很簡單,直接看代碼,註釋已經很詳細了。

[cpp]    view plain   copy   print   ?  

  1. /* 當鼠標處於按下並曾經點中按鈕時,則觸發一次 */  

  2.     controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDownAction), CCControlEventTouchDown);  

  3.   

  4.     /* 當鼠標處於按下並曾經點中按鈕的狀態下,鼠標進入按鈕範圍,則觸發一次 */  

  5.     controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDragEnter), CCControlEventTouchDragEnter);  

  6.   

  7.     /* 當鼠標處於按下並曾經點中按鈕的狀態下,鼠標離開按鈕範圍,則觸發一次 */  

  8.     controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDragExit), CCControlEventTouchDragExit);  

  9.   

  10.     /* 當鼠標處於按下並曾經點中按鈕的狀態下,鼠標進入按鈕範圍,則觸發,只要達到條件,就不斷觸發 */  

  11.     controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDragInside), CCControlEventTouchDragInside);  

  12.   

  13.     /* 當鼠標處於按下並曾經點中按鈕的狀態下,鼠標離開按鈕範圍,則觸發,只要達到條件,就不斷觸發 */  

  14.     controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDragOutside), CCControlEventTouchDragOutside);  

  15.   

  16.     /* 當鼠標處於按下並曾經點中按鈕的狀態下,鼠標鬆開且在按鈕範圍內,則觸發一次 */  

  17.     controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchUpInside), CCControlEventTouchUpInside);  

  18.   

  19.     /* 當鼠標處於按下並曾經點中按鈕的狀態下,鼠標鬆開且在按鈕範圍外,則觸發一次 */  

  20.     controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchUpOutside), CCControlEventTouchUpOutside);  

  21.   

  22.     /* 暫時沒有發現能用鼠標觸發這個事件的操做,看了註釋,應該是由其它事件中斷按鈕事件而觸發的 */  

  23.     controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchCancel), CCControlEventTouchCancel);  


 

回調函數是這樣的:

[cpp]    view plain   copy   print   ?  

  1. void touchDownAction(CCObject* pSender, CCControlEvent event);  

  2.    void touchDragEnter(CCObject* pSender, CCControlEvent event);  

  3.    void touchDragExit(CCObject* pSender, CCControlEvent event);  

  4.    void touchDragInside(CCObject* pSender, CCControlEvent event);  

  5.    void touchDragOutside(CCObject* pSender, CCControlEvent event);  

  6.    void touchUpInside(CCObject* pSender, CCControlEvent event);  

  7.    void touchUpOutside(CCObject* pSender, CCControlEvent event);  

  8.    void touchCancel(CCObject* pSender, CCControlEvent event);  


 

惟一要注意的是,CCControlEvent 不是指針,千萬不要習慣了就給它加一個*~

相關文章
相關標籤/搜索