MusicPlayer 音乐播放器

MusicPlayer 是音乐播放器,它可以方便地控制游戏中的音乐。

播放音乐前,需要用MusicPlayer::preload函数预加载音乐文件。对于每个音乐文件来说,这个函数只需要运行一次。

// 预加载音乐文件
MusicPlayer::preload("音乐文件名.wav");

添加音乐文件后,可以用 MusicPlayer::play 函数播放这个音乐。

// 播放音乐文件
MusicPlayer::play("音乐文件名.wav");
// 播放音乐文件,并循环 3 次
MusicPlayer::play("音乐文件名.wav", 3);
// 播放音乐文件,并循环播放
MusicPlayer::play("音乐文件名.wav", -1);

MusicPlayer 类的 playpauseresumestop这四个函数分别控制音乐的播放、暂停、继续、停止。

音乐对象的使用

另外,调用 MusicPlayer::preload 函数时,函数会返回一个音乐对象。

// 获取音乐对象
auto music = MusicPlayer::preload("音乐文件名.wav");

music 是一个 Music 类型的指针,Music::play 函数用来播放这个音乐。

music->play();

Music::play 函数可以指定循环播放次数(默认为 0),如果这个次数为 -1,它将循环播放。

music->play(-1);    // 循环播放音乐

Music 类的 playpauseresumestop这四个函数分别控制音乐的播放、暂停、继续、停止。

需要注意的是,MusicPlayer::preload 函数可能返回空指针,所以使用它时应进行判断。

// 获取音乐对象
auto music = MusicPlayer::preload("音乐文件名.wav");
// 判断指针是否为空
if (music)
{
    // 播放音乐
    music->play();
}

Timer 定时器

定时器可以每隔一段时间自动执行一次指定的函数,使用定时器之前,应先写一个函数,让定时器去执行它。

// 写一个移动精灵的函数
void MoveSprite()
{
    // 将精灵向右方移动 1 像素
    sprite->movePosX(1);
}

然后创建一个定时器,让它每秒执行 MoveSprite 函数,这样精灵就会不断向右方移动。

// 创建定时器,它每 1 秒执行一次 MoveSprite 函数
Timer::add(MoveSprite, 1.0);

这个定时器永远不会停下来,除非你在某个地方调用了它的stop函数。

也可以使用lambda函数来创建定时器:

Timer::add([=]() {
    // 将精灵向右方移动 1 像素
    sprite->movePosX(1);
}, 1.0);

查看更多关于 Lambda 函数和回调函数的内容

Timer::add()函数的第三个参数可以指定定时器的执行次数。

// 每 0.5 秒执行一次,且执行 5 次后结束
Timer::add(MoveSprite, 0.5f, 5);

Timer::add() 的第四个参数可以给定时器命名,有了名称的定时器可以管理其启动和暂停。

// 定时器名称为 move_timer
Timer::add(MoveSprite, 0.5f, 5, "move_timer");

Random 随机数

Random 类用于获取随机数,Random::range函数可以获取任意数值类型在任意范围内的随机数,如下所示

// 获得一个 [1, 3] 范围内的整形随机数
int num1 = Random::range(1, 3);
// 获得一个 [1, 3] 范围内的浮点型随机数
float num2 = Random::range(1.0f, 3.0f);

Data 数据存储

Data 可以方便地把数据保存到本地,它支持保存intfloatString(字符串)三种类型的数据。下面是一段示例代码

// 保存数据到本地
void Data::saveInt("data1", 2);           // 保存 int 型的值
void Data::saveDouble("data2", 2.2f);      // 保存 float 型的值
void Data::saveString("data3", "test");  // 保存 字符串 型的值

函数的第一个参数表示这个数据的关键字,你可以根据关键字重新取出数据

// 读取
int data1 = Data::getInt("data1", 1);             // 获取 int 型的值
float data2 = Data::getDouble("data2", 1);         // 获取 float 型的值
String data3 = Data::getString("data3", "");    // 获取 字符串 型的值

函数的第二个参数指定了关键字不存在时,函数默认的返回值。

查看更多关于 AppName 的内容

这个页面对你有帮助吗?