CCScale9Sprite九妹的使用以及按钮控件触发事件

cocos2d-x在使用CCScale9Sprite的时候需要注意,因为使用到了扩展库所以要

  • 在项目属性中的C/C++的附加包含目录中,添加$(SolutionDir)extensions,设置include路径
  • 在连接器的输入中,添加libExtensions.lib,这个库文件位于cocos2d-x编译结果目录中(Debug.win32)

接下来需要在源码中加入相应的代码,首先是添加头文件及名字空间

 

 

#include "cocos-ext.h" 
   
USING_NS_CC_EXT; 

交叉编译的时候要注意在Android.mk中要加

$(call import-module,extensions) \

方可编译成功

 

 

首先展示CCScale9Sprite对象九妹的使用。

CCScale9Sprite* nineGirl = CCScale9Sprite::create("button.png");   
nineGirl->setContentSize(CCSize(200, 100));  //这个是设置按钮的大小。~~可大可小的哦~~
nineGirl->setPosition(ccp(300, 200));  
this->addChild(nineGirl);  

效果

 

然后建立按钮我们用的是  CCControlButton类,这个类是已经封装好的。直接用就好了。下面晒出用法,我是在helloworld中使用的

首先在helloworld.h中添加声明

	virtual void touchDownAction(CCObject* pSender, CCControlEvent event); //这个是触发按钮事件后运行的回调函数  
	CCControlButton *ControlButton;                                        //这个是为了辅助回调函数里面控制对象的状态所用的对象


 

helloworld.h中先把官方帮我们做的按钮的代码注释掉,然后加上这些

		//没按的时候的按钮
		CCScale9Sprite *btn1 =CCScale9Sprite::create("CloseNormal.png");
		
		//按的时候的按钮
		CCScale9Sprite *btn2 =CCScale9Sprite::create("CloseSelected.png");

		//按钮的标题
		CCLabelTTF *title =CCLabelTTF::create("Hello", "Marker Felt", 30);  

		//初始化控制按钮,并且按钮的大小会因为标题自动调整
		CCControlButton *controlBtn =CCControlButton::create(title,btn1);

		//设置按钮按下时的图片,后面是官方替我们弄好的枚举。
		controlBtn->setBackgroundSpriteForState(btn2,CCControlStateSelected);
		controlBtn->setPreferredSize(CCSize(45,45));
	    controlBtn->setPosition(ccp(200,300));
	

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

		this->ControlButton =controlBtn;

	 	this->addChild(controlBtn);


 

最后自定义回调函数

void HelloWorld::touchDownAction(CCObject* pSender, CCControlEvent event)
{
	ControlButton->setPosition(ccp(300,100));
}


 

这样就完成了,首先是第一幅画面,当点击按钮会进第二幅画面按钮会变换位置。

 

 

 

这样就演示完了。 

 

然后再将其他的消息也放在下面吧,用法都一样。

消息有这些

 

/* 当鼠标处于按下并曾经点中按钮时,则触发一次 */  
    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);  


 

 

然后就是回调函数

 

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);  


 

结束

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值