4

嗨,我是 ios 开发的新手,正在尝试编写一个基本的应用程序。我希望从启动时播放声音,更具体地说是“sound.mp3”,因此我在我的程序中包含了以下代码:

   - (void)viewDidLoad
{
[super viewDidLoad];
[UIView animateWithDuration:1.5 animations:^{[self.view setBackgroundColor:[UIColor redColor]];}];
[UIView animateWithDuration:0.2 animations:^{title.alpha = 0.45;}];
//audio
NSString *path = [[NSBundle mainBundle]pathForResource:@"sound" ofType:@"mp3"];
AVAudioPlayer *theAudio = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
[theAudio play];
}

然而,这导致模拟器和物理设备都没有播放声音。如果我能得到一些帮助,将不胜感激。

4

1 回答 1

28

问题解决了

您已经在 viewDidLoad 方法中定义并初始化了 AVAudioPalyer。因此,audioPlayer 对象的生命周期仅限于 viewDidLoad 方法。对象在方法结束时死亡,因此音频不会播放。您必须保留对象,直到它结束播放音频。

全局定义 avPlayer,

@property(nonatomic, strong) AVAudioPlayer *theAudio;

在 viewDidLoad 中,

- (void)viewDidLoad
{
[super viewDidLoad];
[UIView animateWithDuration:1.5 animations:^{[self.view setBackgroundColor:[UIColor redColor]];}];
[UIView animateWithDuration:0.2 animations:^{title.alpha = 0.45;}];
//audio
NSString *path = [[NSBundle mainBundle]pathForResource:@"sound" ofType:@"mp3"];
self.theAudio = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
[self.theAudio play];
}
于 2013-05-07T01:42:46.617 回答