日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

cocos2d-x按钮CCControlButton的用法

發(fā)布時(shí)間:2025/3/21 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2d-x按钮CCControlButton的用法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載請(qǐng)注明,原文地址??http://blog.csdn.net/musicvs/article/details/8242963


?

1.?按鈕創(chuàng)建


[cpp]?view plaincopyprint?
  • /*?正常狀態(tài)下的按鈕圖片?*/??
  • ????CCScale9Sprite*?btnNormal?=?CCScale9Sprite::create("button.png");??
  • ??
  • ????/*?點(diǎn)擊狀態(tài)下的按鈕圖片?*/??
  • ????CCScale9Sprite*?btnDown?=?CCScale9Sprite::create("buttonHighlighted.png");??
  • ??
  • ????/*?按鈕標(biāo)題?*/??
  • ????CCLabelTTF?*title?=?CCLabelTTF::create("Touch?Me!3324234",?"Marker?Felt",?30);??
  • ??
  • ????/*?按鈕的大小會(huì)根據(jù)標(biāo)題自動(dòng)調(diào)整?*/??
  • ????CCControlButton*?controlBtn?=?CCControlButton::create(title,?btnNormal);??
  • ??
  • ????/*?設(shè)置按鈕按下時(shí)的圖片?*/??
  • ????controlBtn->setBackgroundSpriteForState(btnDown,?CCControlStateSelected);??
  • ????controlBtn->setPosition(ccp(200,?200));??
  • ????this->addChild(controlBtn);??

  • ?

    其實(shí)代碼很簡(jiǎn)單,兩張圖片,分別是按鈕正常狀態(tài)和點(diǎn)擊狀態(tài)圖片,當(dāng)然,她們都是九妹圖片~

    然后是一個(gè)標(biāo)題標(biāo)簽,當(dāng)然了,如果按鈕沒(méi)有標(biāo)題,呢誰(shuí)知道是什么作用呢~

    ?

    最后要界面一個(gè)新的家伙:?CCControlButton

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

    ?

    但是有一點(diǎn)要注意,按鈕的大小是根據(jù)標(biāo)簽內(nèi)容進(jìn)行縮放的,那,如果我想讓按鈕的大小固定呢?畢竟不是所有人都喜歡變化~

    ?

    很簡(jiǎn)單,就一句話:

    [cpp]?view plaincopyprint?
  • /*?強(qiáng)制設(shè)置按鈕大小,如果按鈕標(biāo)題大小超過(guò)這個(gè)范圍,則會(huì)自動(dòng)擴(kuò)大?*/??
  • ????controlBtn->setPreferredSize(CCSize(300,?50));??

  • ?

    搞定~

    ?

    2.?按鈕事件

    按鈕怎么可能少了點(diǎn)擊事件呢?~這個(gè)很簡(jiǎn)單,直接看代碼,注釋已經(jīng)很詳細(xì)了。

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

  • ?

    回調(diào)函數(shù)是這樣的:

    [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?不是指針,千萬(wàn)不要習(xí)慣了就給它加一個(gè)*號(hào)~


    轉(zhuǎn)載于:https://www.cnblogs.com/lexiaoyao-jun/archive/2013/03/01/5208266.html

    總結(jié)

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

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。