也就是Botton
[Cocos2d-x]源码分析之 2d/ui/Widget
ccWidgetTouchCallback
_touchEventCallback;
ccWidgetClickCallback
_clickEventListener;
ccWidgetEventCallback _ccEventCallback;
typedef
std
::
function
<
void
(
Ref
*,
Widget
::
TouchEventType
)> ccWidgetTouchCallback;
void
addTouchEventListener(
const
ccWidgetTouchCallback
& callback);
新方法
void
touchEvent(
Ref
* pSender,
Widget
::
TouchEventType
type);
button1->
addTouchEventListener
(
CC_CALLBACK_2
(
HelloWorld
::
touchEvent
,
this
));
void
HelloWorld
::touchEvent(
Ref
* pSender,
Widget
::
TouchEventType
type){
switch (type) {
// 用户第一次接触到按钮的时候触发
switch (type) {
// 用户第一次接触到按钮的时候触发
case Widget::TouchEventType::BEGAN:
过时的方法:
#include
"ui/CocosGUI.h"
//******
using
namespace
cocos2d
::
ui
;
void
touchEvent(
Ref
* pSender,
TouchEventType
type);
private
:
Size size;
Size size;
Text* label;//
用于显示控件按钮状态的文本
#include
"ui/CocosGUI.h"
//******
using
namespace
cocos2d
::
ui
;
size
=
Director
::
getInstance
()->
getWinSize
();
label = Text :: create ();
label -> setString ( "NO Event" );
label -> setFontName ( "fonts/Marker Felt.ttf" );
label -> setPosition ( Vec2 ( size . width / 2 , size . height * 0.8 ));
label -> setFontSize ( 25 );
addChild ( label );
label -> setTouchScaleChangeEnabled ( true );
label -> setTouchEnabled ( true );
// 普通效果的按钮
auto button1 = Button :: create ();
button1-> loadTextures ( "animationbuttonnormal.png" , "animationbuttonpressed.png" , "" );
button1-> setPosition ( Vec2 ( size . width / 2 , size . height * 0.6 ));
button1-> setTouchEnabled ( true );
// 添加监听事件
button1-> addTouchEventListener ( this , toucheventselector ( HelloWorld :: touchEvent ));
addChild (button1);
// 开启点击放大效果
button1-> setPressedActionEnabled ( true );
// 带文字的按钮
auto button2 = Button :: create ();
button2-> loadTextures ( "animationbuttonnormal.png" , "animationbuttonpressed.png" , "" );
button2-> setPosition ( Vec2 ( size . width / 2 , size . height * 0.4 ));
button2-> setTouchEnabled ( true );
button2-> addTouchEventListener ( this , toucheventselector ( HelloWorld :: touchEvent ));
addChild (button2);
button2-> setTitleText ( "Click me" );
// 点九图渲染方式的按钮
auto button3 = Button :: create ();
button3-> loadTextures ( "green_edit.png" , "yellow_edit.png" , "" );
button3-> setPosition ( Vec2 ( size . width / 2 , size . height * 0.2 ));
button3-> setTouchEnabled ( true );
button3-> addTouchEventListener ( this , toucheventselector ( HelloWorld :: touchEvent ));
addChild (button3);
button3-> setScale9Enabled ( true );
// 设置按钮大小
button3-> setSize ( Size ( 150 , 30 ));
label = Text :: create ();
label -> setString ( "NO Event" );
label -> setFontName ( "fonts/Marker Felt.ttf" );
label -> setPosition ( Vec2 ( size . width / 2 , size . height * 0.8 ));
label -> setFontSize ( 25 );
addChild ( label );
label -> setTouchScaleChangeEnabled ( true );
label -> setTouchEnabled ( true );
// 普通效果的按钮
auto button1 = Button :: create ();
button1-> loadTextures ( "animationbuttonnormal.png" , "animationbuttonpressed.png" , "" );
button1-> setPosition ( Vec2 ( size . width / 2 , size . height * 0.6 ));
button1-> setTouchEnabled ( true );
// 添加监听事件
button1-> addTouchEventListener ( this , toucheventselector ( HelloWorld :: touchEvent ));
addChild (button1);
// 开启点击放大效果
button1-> setPressedActionEnabled ( true );
// 带文字的按钮
auto button2 = Button :: create ();
button2-> loadTextures ( "animationbuttonnormal.png" , "animationbuttonpressed.png" , "" );
button2-> setPosition ( Vec2 ( size . width / 2 , size . height * 0.4 ));
button2-> setTouchEnabled ( true );
button2-> addTouchEventListener ( this , toucheventselector ( HelloWorld :: touchEvent ));
addChild (button2);
button2-> setTitleText ( "Click me" );
// 点九图渲染方式的按钮
auto button3 = Button :: create ();
button3-> loadTextures ( "green_edit.png" , "yellow_edit.png" , "" );
button3-> setPosition ( Vec2 ( size . width / 2 , size . height * 0.2 ));
button3-> setTouchEnabled ( true );
button3-> addTouchEventListener ( this , toucheventselector ( HelloWorld :: touchEvent ));
addChild (button3);
button3-> setScale9Enabled ( true );
// 设置按钮大小
button3-> setSize ( Size ( 150 , 30 ));
void
HelloWorld
::touchEvent(
Ref
* pSender,
TouchEventType
type){
switch (type) {
// 用户第一次接触到按钮的时候触发
case cocos2d :: ui :: TOUCH_EVENT_BEGAN :
label -> setString ( __String :: createWithFormat ( "Touch Down" )-> getCString ());
break ;
// 用户在按钮区域上移动时触发
case cocos2d :: ui :: TOUCH_EVENT_MOVED :
label -> setString ( String :: createWithFormat ( "Touch Move" )-> getCString ());
break ;
// 用户离开按钮区域时触发
case cocos2d :: ui :: TOUCH_EVENT_ENDED :
label -> setString ( String :: createWithFormat ( "Touch Up" )-> getCString ());
break ;
// 触摸取消时触发
case cocos2d :: ui :: TOUCH_EVENT_CANCELED :
label -> setString ( String :: createWithFormat ( "Touch Cancelled" )-> getCString ());
break ;
}
}
switch (type) {
// 用户第一次接触到按钮的时候触发
case cocos2d :: ui :: TOUCH_EVENT_BEGAN :
label -> setString ( __String :: createWithFormat ( "Touch Down" )-> getCString ());
break ;
// 用户在按钮区域上移动时触发
case cocos2d :: ui :: TOUCH_EVENT_MOVED :
label -> setString ( String :: createWithFormat ( "Touch Move" )-> getCString ());
break ;
// 用户离开按钮区域时触发
case cocos2d :: ui :: TOUCH_EVENT_ENDED :
label -> setString ( String :: createWithFormat ( "Touch Up" )-> getCString ());
break ;
// 触摸取消时触发
case cocos2d :: ui :: TOUCH_EVENT_CANCELED :
label -> setString ( String :: createWithFormat ( "Touch Cancelled" )-> getCString ());
break ;
}
}