Cocos2d-x button控件

Cocos2dx UI交互实战
本文介绍如何在Cocos2dx中加载UI界面并实现按钮的点击事件响应。通过具体的代码示例,展示了如何使用GUIReader加载界面,以及如何为按钮添加触摸监听器来触发特定的行为。


  1. #include "editor-support/cocostudio/CCSGUIReader.h"
  2. #include "cocostudio/CocoStudio.h"
  3. #include "ui/CocosGUI.h"
  4. using namespace cocos2d::ui;
  5. using namespace cocostudio;

 

上面就是比较完整的使用UI所需要用到的头文件了。

 

然后,获取UI控件的方法如下,继续修改createOprUI函数:

  1. void TollgateScene::createOprUI()
  2. {
  3.     auto UI = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("OprUI_1.ExportJson");
  4.     this->addChild(UI);
  5.  
  6.     /* 获取按钮对象 */
  7.     Button* rightBtn = (Button*)Helper::seekWidgetByName(UI, "rightBtn");
  8.     Button* quickMoveBtn = (Button*)Helper::seekWidgetByName(UI, "quickMoveBtn");
  9.     Button* leftBtn = (Button*)Helper::seekWidgetByName(UI, "leftBtn");
  10. }

Helper::seekWidgetByName函数会从UI里面找控件,一层层的找,父控件找不到,就找子控件,如此递归,最后找的名字相符的控件,返回这个控件对象。

 

很简单,不多解释喇~

 

添加按钮回调事件

OK,最后一步了,现在按钮摆在那里什么都做不了,我们给按钮添加回调事件~

 

先给TollgateScene添加三个函数声明:

  1.     void moveToLeft(Ref* sender, TouchEventType type);
  2.     void moveToRight(Ref* sender, TouchEventType type);
  3.     void quickMove(Ref* sender, TouchEventType type);

这是Button点击事件回调时所需要的函数格式。

 

然后,继续修改createOprUI函数:

  1. void TollgateScene::createOprUI()
  2. {
  3.     auto UI = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("OprUI_1.ExportJson");
  4.     this->addChild(UI);
  5.  
  6.     /* 获取按钮对象 */
  7.     Button* rightBtn = (Button*)Helper::seekWidgetByName(UI, "rightBtn");
  8.     Button* quickMoveBtn = (Button*)Helper::seekWidgetByName(UI, "quickMoveBtn");
  9.     Button* leftBtn = (Button*)Helper::seekWidgetByName(UI, "leftBtn");
  10.  
  11.     /* 添加按钮回调事件 */
  12.     leftBtn->addTouchEventListener(this, toucheventselector(TollgateScene::moveToLeft));
  13.     rightBtn->addTouchEventListener(this, toucheventselector(TollgateScene::moveToRight));
  14.     quickMoveBtn->addTouchEventListener(this, toucheventselector(TollgateScene::moveToRight));
  15. }

 

利用addTouchEventListener函数就可以绑定按钮的回调事件了~

 

最后了,看看三个回调函数的实现:

  1. void TollgateScene::moveToLeft(Ref* sender, TouchEventType type)
  2. {
  3.     switch (type)
  4.     {
  5.     case TOUCH_EVENT_ENDED:
  6.         m_player->moveToLeft();
  7.         break;
  8.  
  9.     }
  10. }
  11.  
  12. void TollgateScene::moveToRight(Ref* sender, TouchEventType type)
  13. {
  14.     switch (type)
  15.     {
  16.     case TOUCH_EVENT_ENDED:
  17.         m_player->moveToRight();
  18.         break;
  19.  
  20.     }
  21. }
  22.  
  23. void TollgateScene::quickMove(Ref* sender, TouchEventType type)
  24. {
  25.     switch (type)
  26.     {
  27.     case TOUCH_EVENT_ENDED:
  28.         m_player->quickMove();
  29.         break;
  30.  
  31.     }
  32. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值