首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SimpleAudioEngine随机播放列表

SimpleAudioEngine随机播放列表
EN

Stack Overflow用户
提问于 2011-08-14 13:13:39
回答 1查看 531关注 0票数 0

我想在我的游戏里洗一打歌。下一首歌曲不应与当前歌曲相同。

代码语言:javascript
运行
复制
[[[SimpleAudioEngine sharedEngine] playBackgroundMusic: song];

应该有一个循环,歌曲应该是随机的,

代码语言:javascript
运行
复制
[[NSString stringWithFormat: @"song%i.mp3", arc4random() % 20 + 1];
//20 songs starting from song1.mp3

如果歌曲在用户的ipod音乐播放时停止播放,那就太好了。但是音效应该仍然是可用的:

代码语言:javascript
运行
复制
[[SimpleAudioEngine sharedEngine] playEffect: @"aaa.caf"]

另外,当ipod播放音乐时,然后启动游戏,游戏音乐甚至不应该被启动。

如何实现这个目标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-14 14:14:12

当你启动你的应用程序时,你可以像这样检查并播放或不播放你自己的音乐。

代码语言:javascript
运行
复制
if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying) {
    // dont play and do whatever you think should be done in this case
} else {
    [[[SimpleAudioEngine sharedEngine] playBackgroundMusic: song];
}

附注:

代码语言:javascript
运行
复制
//Remember to preload your effects and bg music so there is not any delay
[[SimpleAudioEngine sharedEngine] preloadEffect:@"aaa.caf"];
[[SimpleAudioEngine sharedEngine] preloadBackgroundMusic:@"song1.mp3"];
//And to unload your effects when you wont use them anymore or receive a mem warning, or in dealloc
[[SimpleAudioEngine sharedEngine] unloadEffect:@"aaa.caf"];

更新

在viewDidLoad中,创建一个包含所有歌曲的字符串数组,并使用以下命令对它们进行混洗: self shuffle,为此实现以下代码:

代码语言:javascript
运行
复制
- (void)shuffle {
    for (NSInteger i = [songsArray count] - 1; i > 0; --i) [songsArray exchangeObjectAtIndex:(arc4random() % (i+1)) withObjectAtIndex:i];
}

每次你的背景音乐结束时,使用[self shuffle],然后使用playBackgroundMusic:[songsArray lastObject],这应该会处理你混乱的播放列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7055156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档