如何使用Objective-C自动将声音文件播放为iOS应用程序和循环?

时间:2012-08-07 22:24:59

标签: iphone objective-c ios audio

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

2 个答案:

答案 0 :(得分: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 Framework导入您的项目。

答案 1 :(得分:1)

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

声明

#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];