入门教程

ToggleButton 开关按钮

ToggleButton 类已弃用,下面介绍开关按钮功能的实现方法。

开关按钮用来实现有 “开” 和 “关” 两种状态的按钮,例如背景音乐的开关等,ToggleButtonListener 开关按钮事件监听器提供了开关按钮功能,它可以添加到任何一个节点上。

例如,下面的代码创建了一个可以控制音乐的播放与停止的按钮

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 假设有一个精灵 sprite,把它变成控制音乐播放的按钮
// 创建点击按钮后的回调函数
auto callback = [](ButtonEvent evt, bool state)
{
if (evt == ButtonEvent::Clicked)
{
// 点击了按钮
if (state)
{
// 按钮现在是打开状态,播放音乐
MusicPlayer::resume("music.wav");
}
else
{
// 按钮现在是关闭状态,停止音乐
MusicPlayer::pause("music.wav");
}
}
};

// 给 sprite 添加监听器
auto lis = gcnew ToggleButtonListener(true /* 默认是打开状态 */, callback);
sprite->addListener(lis);

// 游戏暂停时,让这个按钮继续工作
lis->ignoreGamePaused();
Tips

回调函数的使用方法请参考 [关于回调函数]

旧版 ToggleButton

下面的代码创建了一个可以控制音乐的播放与停止的按钮

1
2
3
4
5
6
7
8
9
10
11
12
auto btnTextOn = gcnew Text("开");   // 创建开状态文字
auto btnTextOff = gcnew Text("关"); // 创建关状态文字
auto button = gcnew ToggleButton(btnTextOn, btnTextOff); // 创建开关按钮
/* 设置点击按钮的回调函数 */
button->setClickFunc([=]() {
if (button->getState()) { // 获取按钮是打开还是关闭
MusicPlayer::resume("music.wav"); // 打开状态下,继续播放音乐
}
else {
MusicPlayer::pause("music.wav"); // 关闭状态下,暂停音乐
}
});

使用ToggleButton::setState函数可以切换开关的 “开” 和 “关” 状态。

1
2
// 把按钮的状态设为关闭
button->setState(false);

使用ToggleButton::getState函数可以获取开关的 “开” 和 “关” 状态。

1
bool state = button->getState();
Tips

关于音乐的播放方法请参考 [使用 Player 播放音乐]