日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

cocos2d-x按钮CCControlButton的用法

發布時間:2025/3/21 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2d-x按钮CCControlButton的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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


?

1.?按鈕創建


[cpp]?view plaincopyprint?
  • /*?正常狀態下的按鈕圖片?*/??
  • ????CCScale9Sprite*?btnNormal?=?CCScale9Sprite::create("button.png");??
  • ??
  • ????/*?點擊狀態下的按鈕圖片?*/??
  • ????CCScale9Sprite*?btnDown?=?CCScale9Sprite::create("buttonHighlighted.png");??
  • ??
  • ????/*?按鈕標題?*/??
  • ????CCLabelTTF?*title?=?CCLabelTTF::create("Touch?Me!3324234",?"Marker?Felt",?30);??
  • ??
  • ????/*?按鈕的大小會根據標題自動調整?*/??
  • ????CCControlButton*?controlBtn?=?CCControlButton::create(title,?btnNormal);??
  • ??
  • ????/*?設置按鈕按下時的圖片?*/??
  • ????controlBtn->setBackgroundSpriteForState(btnDown,?CCControlStateSelected);??
  • ????controlBtn->setPosition(ccp(200,?200));??
  • ????this->addChild(controlBtn);??

  • ?

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

    然后是一個標題標簽,當然了,如果按鈕沒有標題,呢誰知道是什么作用呢~

    ?

    最后要界面一個新的家伙:?CCControlButton

    我是這么理解的,CCControlButton它只是一個空殼,它具備很多按鈕所需要的功能(點擊事件什么的),然后九妹圖片和標題標簽是內容,把內容添加到這個空殼里,一個按鈕就誕生了:

    ?

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

    ?

    很簡單,就一句話:

    [cpp]?view plaincopyprint?
  • /*?強制設置按鈕大小,如果按鈕標題大小超過這個范圍,則會自動擴大?*/??
  • ????controlBtn->setPreferredSize(CCSize(300,?50));??

  • ?

    搞定~

    ?

    2.?按鈕事件

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

    [cpp]?view plaincopyprint?
  • /*?當鼠標處于按下并曾經點中按鈕時,則觸發一次?*/??
  • ????controlBtn->addTargetWithActionForControlEvents(this,?cccontrol_selector(HelloWorld::touchDownAction),?CCControlEventTouchDown);??
  • ??
  • ????/*?當鼠標處于按下并曾經點中按鈕的狀態下,鼠標進入按鈕范圍,則觸發一次?*/??
  • ????controlBtn->addTargetWithActionForControlEvents(this,?cccontrol_selector(HelloWorld::touchDragEnter),?CCControlEventTouchDragEnter);??
  • ??
  • ????/*?當鼠標處于按下并曾經點中按鈕的狀態下,鼠標離開按鈕范圍,則觸發一次?*/??
  • ????controlBtn->addTargetWithActionForControlEvents(this,?cccontrol_selector(HelloWorld::touchDragExit),?CCControlEventTouchDragExit);??
  • ??
  • ????/*?當鼠標處于按下并曾經點中按鈕的狀態下,鼠標進入按鈕范圍,則觸發,只要達到條件,就不斷觸發?*/??
  • ????controlBtn->addTargetWithActionForControlEvents(this,?cccontrol_selector(HelloWorld::touchDragInside),?CCControlEventTouchDragInside);??
  • ??
  • ????/*?當鼠標處于按下并曾經點中按鈕的狀態下,鼠標離開按鈕范圍,則觸發,只要達到條件,就不斷觸發?*/??
  • ????controlBtn->addTargetWithActionForControlEvents(this,?cccontrol_selector(HelloWorld::touchDragOutside),?CCControlEventTouchDragOutside);??
  • ??
  • ????/*?當鼠標處于按下并曾經點中按鈕的狀態下,鼠標松開且在按鈕范圍內,則觸發一次?*/??
  • ????controlBtn->addTargetWithActionForControlEvents(this,?cccontrol_selector(HelloWorld::touchUpInside),?CCControlEventTouchUpInside);??
  • ??
  • ????/*?當鼠標處于按下并曾經點中按鈕的狀態下,鼠標松開且在按鈕范圍外,則觸發一次?*/??
  • ????controlBtn->addTargetWithActionForControlEvents(this,?cccontrol_selector(HelloWorld::touchUpOutside),?CCControlEventTouchUpOutside);??
  • ??
  • ????/*?暫時沒有發現能用鼠標觸發這個事件的操作,看了注釋,應該是由其它事件中斷按鈕事件而觸發的?*/??
  • ????controlBtn->addTargetWithActionForControlEvents(this,?cccontrol_selector(HelloWorld::touchCancel),?CCControlEventTouchCancel);??

  • ?

    回調函數是這樣的:

    [cpp]?view plaincopyprint?
  • void?touchDownAction(CCObject*?pSender,?CCControlEvent?event);??
  • ???void?touchDragEnter(CCObject*?pSender,?CCControlEvent?event);??
  • ???void?touchDragExit(CCObject*?pSender,?CCControlEvent?event);??
  • ???void?touchDragInside(CCObject*?pSender,?CCControlEvent?event);??
  • ???void?touchDragOutside(CCObject*?pSender,?CCControlEvent?event);??
  • ???void?touchUpInside(CCObject*?pSender,?CCControlEvent?event);??
  • ???void?touchUpOutside(CCObject*?pSender,?CCControlEvent?event);??
  • ???void?touchCancel(CCObject*?pSender,?CCControlEvent?event);??

  • ?

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


    轉載于:https://www.cnblogs.com/lexiaoyao-jun/archive/2013/03/01/5208266.html

    總結

    以上是生活随笔為你收集整理的cocos2d-x按钮CCControlButton的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。