cocos2d-x在使用CCScale9Sprite的时候需要注意,因为使用到了扩展库所以要
- 在项目属性中的C/C++的附加包含目录中,添加$(SolutionDir)extensions,设置include路径
- 在连接器的输入中,添加libExtensions.lib,这个库文件位于cocos2d-x编译结果目录中(Debug.win32)
接下来需要在源码中加入相应的代码,首先是添加头文件及名字空间
1 #include "cocos-ext.h"
2
3 USING_NS_CC_EXT;
交叉编译的时候要注意在Android.mk中要加
$(call import-module,extensions) \
方可编译成功
1 /////////////////////////////
2 //添加跳转按钮
3 //正常态下按钮图片
4 CCScale9Sprite *butNormal = CCScale9Sprite::create("up2.png");
5 //选中后按钮图片
6 CCScale9Sprite *butSelected = CCScale9Sprite::create("up1.png");
7 //按钮标题
8 //CCLabelTTF *title = CCLabelTTF::create("Button","Arial",20);
9 //按钮可以根据标题自动调整大小,当然也可以设定
10 CCControlButton *pButton = CCControlButton::create(butNormal);
11 pButton->setPreferredSize(CCSizeMake(48,48));
12 //设置选中后图片
13 pButton->setBackgroundSpriteForState(butSelected,CCControlStateSelected);
14 pButton->setPosition(ccp(size.width / 2, size.height/2));
15 this->addChild(pButton);
按钮事件
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);
回调函数
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);
原文链接: https://www.cnblogs.com/sambird/p/3197562.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/96356
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!