博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2d-x按钮CCControlButton的用法
阅读量:6646 次
发布时间:2019-06-25

本文共 2959 字,大约阅读时间需要 9 分钟。

  hot3.png

转载请注明,原文地址  

1. 按钮创建

[cpp]           

  1. /* 正常状态下的按钮图片 */  

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

  3.   

  4.     /* 点击状态下的按钮图片 */  

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

  6.   

  7.     /* 按钮标题 */  

  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]           

  1. /* 强制设置按钮大小,如果按钮标题大小超过这个范围,则会自动扩大 */  

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

 

搞定~

2. 按钮事件

按钮怎么可能少了点击事件呢?~这个很简单,直接看代码,注释已经很详细了。

[cpp]           

  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]           

  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 不是指针,千万不要习惯了就给它加一个*~

转载于:https://my.oschina.net/igames/blog/618987

你可能感兴趣的文章
Javascript- Javascript学习
查看>>
day 5.基本数据类型:字典(dict)
查看>>
python 机器学习之岭回归
查看>>
Centos7通过Docker安装Sentry(哨兵)
查看>>
加入收藏兼容ie和火狐
查看>>
Linux常用的网络命令
查看>>
树莓派蓝牙连接
查看>>
Android 网络编程
查看>>
设计师的视觉设计五项修炼
查看>>
转:: 刺鸟:用python来开发webgame服务端(4)
查看>>
十款被人忽视的堪称神器的软件【纯干货】
查看>>
ZOJ 3596Digit Number(BFS+DP)
查看>>
检测Java程序运行时间的2种方法(高精度的时间[纳秒]与低精度的时间[毫秒])...
查看>>
JAVA基础知识|集合
查看>>
poj 2752 - Seek the Name, Seek the Fame
查看>>
exforce_download() -- 对CI中force_download()增强后的函数(不依赖CI)
查看>>
第七次课后作业
查看>>
Python中创建守护进程
查看>>
TOJ 2703: Cow Digit Game
查看>>
将字典转换成变量, 字符串与列表相互转换
查看>>