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 に答える