按钮是什么,好像没有必要解释,我们都知道这东西是用来点击的,点击后使我们的游戏产生一些变化,比如更改了场景,触发了动作等等。
按钮会拦截点击事件,事件触发时调用事先定义好的回调函数。
按钮有一个正常状态,一个选择状态,还有一个不可点击状态,按钮的外观可以根据这三个状态而改变。
Cocos2d-x 提供 Button 对象支持按钮功能,在操作的时候要有头文件包含:#include "ui/CocosGUI.h"。
创建一个按钮:
auto myButton = ui::Button::create("But1.png", "But2.png", "But3.png"); myButton->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2)); this->addChild(myButton);
改变按钮的一些属性:
myButton->setEnabled(false); myButton->setTitleText("ButtonCalled"); myButton->setTitleFontName("Arial"); myButton->setTitleFontSize(20); myButton->setTitleColor(Color3B::YELLOW);
为按钮添加事件:
myButton->addTouchEventListener([](Ref* pSender, ui::Widget::TouchEventType type) { switch (type) { case ui::Widget::TouchEventType::BEGAN: // 按钮按下 cocos2d::log("ui::Widget::TouchEventType::BEGAN"); break; case ui::Widget::TouchEventType::MOVED: // 按钮按下并移动 cocos2d::log("ui::Widget::TouchEventType::MOVED"); break; case ui::Widget::TouchEventType::ENDED: // 结束按钮按下 cocos2d::log("ui::Widget::TouchEventType::ENDED"); break; case ui::Widget::TouchEventType::CANCELED: // 按钮中断 cocos2d::log("ui::Widget::TouchEventType::CANCELED"); break; default: break; } });
禁用按钮:
myButton->setEnabled(false);
创建后,按钮三态示例:
事件触发后,控制台的输出内容(依次 按下,移动两次,抬起):