原 Button
类已弃用,下面介绍按钮功能的实现方法。
ButtonListener
按钮事件监听器提供了按钮基础功能,它可以添加到任何一个节点上,所以它可以让一段文字或者一个精灵变成按钮。
例如,下面的代码创建了一个点击后退出游戏的按钮
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
auto callback = [](ButtonEvent evt) { if (evt == ButtonEvent::Clicked) { Game::quit(); } };
auto lis = gcnew ButtonListener(callback); sprite->addListener(lis);
lis->ignoreGamePaused();
|
ButtonEvent
是按钮相关事件,它的定义如下
1 2 3 4 5 6 7 8
| enum class ButtonEvent { MouseEntered, MouseExited, Pressed, Clicked, };
|
Button 表示一个按钮,你可以把一段文字或者一个精灵变成按钮,它的使用方式很简单
1 2 3 4 5 6 7 8 9 10 11 12
| auto btnSprite = gcnew Sprite("按钮图片.png");
auto callback = []() { SceneManager::enter(gcnew Scene); };
auto button = gcnew Button(btnSprite, callback);
scene->addChild(button);
|
普通的按钮有四个状态:正常、鼠标移入、按下、禁用,你可以设置按钮在四种状态下显示不同的精灵或文本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| auto btnNormal = gcnew Sprite("按钮图片.png");
auto btnSelect = gcnew Sprite("按下时图片.png");
auto callback = []() { SceneManager::enter(gcnew Scene); };
auto button = gcnew Button; button->setNormal(btnNormal); button->setSelected(btnSelect); button->setClickFunc(callback);
scene->addChild(button);
|
如果你想让一个按钮停止工作,可以把它设为禁用状态
1 2
| button->setEnable(false);
|
把精灵变为按钮后,不需要再将精灵加入到场景中,否则将产生错误。Debug 状态下引擎可以检测这种错误,在错误产生时中断程序,并在控制台中给出提示。关于控制台的使用方法请参考
[关于控制台]。