-1

我正在使用objective-c为iPhone制作游戏。我有我想在项目的文件中播放的音乐。我需要知道如何让它在应用程序启动时开始播放,并在最后循环播放。有谁知道如何做到这一点?代码示例会很棒!谢谢。

4

2 回答 2

2

您可以在 App Delegate 中使用 AVAudioPlayer。

首先在您的 App Delegate .h 文件中添加以下行:

#import <AVFoundation/AVFoundation.h>

还有这些:

AVAudioPlayer *musicPlayer;

在您的 .m 文件中添加此方法:

- (void)playMusic {

    NSString *musicPath = [[NSBundle mainBundle] pathForResource:@"phone_loop" ofType:@"wav"];
    NSURL *musicURL = [NSURL fileURLWithPath:musicPath];

    musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
    [musicPlayer setNumberOfLoops:-1];   // Negative number means loop forever

    [musicPlayer prepareToPlay];
    [musicPlayer play];
}

最后在didFinishLaunchingWithOptions方法中调用它:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  [self playMusic];
  ...
}

如果您只想停止音乐:

[musicPlayer stop];

此外,您可以查看用于处理音频中断的 AVAudioPlayer 代表的 Apple 文档http://developer.apple.com/library/ios/#DOCUMENTATION/AVFoundation/Reference/AVAudioPlayerDelegateProtocolReference/Reference/Reference.html

PS:记得将 AVFoundation 框架导入到你的项目中。

于 2012-08-07T23:18:00.503 回答
1

首先将 AVFoundation 框架导入您的项目。然后将音乐文件插入到您的项目中。

宣布

#import <AVFoundation/AVFoundation.h>

接着

AVAudioPlayer *audioPlayer;
NSURL *file = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"soundName" ofType:@"mp3"]];
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:file error:nil];
    audioPlayer.numberOfLoops = -1; // Infinite loops
    [audioPlayer setVolume:1.0];
    [audioPlayer prepareToPlay];
    [audioPlayer start]

您可以通过使用在应用程序进入背景之前停止声音

    [audioPlayer stop];
于 2012-08-07T22:58:09.303 回答