cocos2d-x-3.13\cocos\ui控件Button

使用ui控件必须添加#include “ui/CocosGUI.h”(在.h文件中添加)和命名空间using namespace cocos2d::ui(在cpp文件中添加);

Widget *pWidget = dynamic_cast<Widget*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("NewUi_1.json"));
    auto *btn =static_cast<Button *>(Helper::seekWidgetByName(pWidget, "Button_1"));
    auto *text = static_cast<Text *>(Helper::seekWidgetByName(pWidget, "Label_15"));
    text->setAnchorPoint(Vec2(0,0));
    text->setText("xxxxxxxxxxxxxxxxxxxxxxxxx");
    /* 设置按钮点击事件(注意转换类型的对应) */
    btn->addTouchEventListener(CC_CALLBACK_2(HelloWorld::touchEvent, this));
    this->addChild(pWidget);

addTouchEventListener函数为按钮添加回调函数touchEvent
.h文件的声明处:

void touchEvent(cocos2d::Ref *pSender,cocos2d::ui::Widget::TouchEventType type);

注意:因为.h文件没有using namespace cocos2d::ui,所以需要cocos2d::ui::指定类
.cpp文件的定义处:
void HelloWorld::touchEvent(Ref *pSender, Widget::TouchEventType type)
{
switch (type)
{
case Widget::TouchEventType::BEGAN:
CCLOG(“lwlog::touch Begin”);
break;

case Widget::TouchEventType::MOVED:
    CCLOG("lwlog::touch Move");
    break;

case Widget::TouchEventType::ENDED:
{
    CCLOG("lwlog::touch Ended");
}break;
case Widget::TouchEventType::CANCELED:
    CCLOG("lwlog::touch Cancelled");
    break;
default:
    break;
}

}
这里的回调宏定义

// new callbacks based on C++11
#define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_ARGS__)
#define CC_CALLBACK_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)
#define CC_CALLBACK_2(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__VA_ARGS__)
#define CC_CALLBACK_3(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, ##__VA_ARGS__)

这里的0-3表示参数个数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值