0

我想在我的游戏中随机播放十几首歌曲。下一首歌曲不应与当前歌曲相同。

[[[SimpleAudioEngine sharedEngine] playBackgroundMusic: song];

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

[[NSString stringWithFormat: @"song%i.mp3", arc4random() % 20 + 1];
//20 songs starting from song1.mp3

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

[[SimpleAudioEngine sharedEngine] playEffect: @"aaa.caf"]

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

如何实施?

4

1 回答 1

0

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

if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying) {
    // dont play and do whatever you think should be done in this case
} else {
    [[[SimpleAudioEngine sharedEngine] playBackgroundMusic: song];
}

边注:

//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] 对其进行随机播放,为此实现以下代码:

- (void)shuffle {
    for (NSInteger i = [songsArray count] - 1; i > 0; --i) [songsArray exchangeObjectAtIndex:(arc4random() % (i+1)) withObjectAtIndex:i];
}

每次您的背景音乐完成使用时[self shuffle]playBackgroundMusic:[songsArray lastObject]都应该处理您的随机播放列表。

于 2011-08-14T06:14:11.943 回答