- 締切済み
NSTimerカウントダウンで音楽を停止するには?
Xcodeで iPhoneアプリ作りに奮闘している初心者です。 NSTimerでカウントダウンタイマーを設定しましたが、タイマー終了とともに BGM音楽を停止したいのですが、.p ファイルに #import <AVFoundation/AVFoundation.h> と追加して、.m ファイルに タイマー終了時にイベントとして、 if (RestTime == 0) { timeflag = false; NSString *bgmPath = [[NSBundle mainBundle] pathForResource:@"xxxx"ofType:@"mp3" ]; NSURL *bgmUrl = [NSURL fileURLWithPath:bgmPath]; sound = [[AVAudioPlayer alloc] initWithContentsOfURL:bgmUrl error:nil]; [sound setNumberOfLoops:-1]; [sound stop]; とコードをいれてみましたが、タイマーは終了しても音楽は止まらず鳴りっぱなしです。 NSTimer周辺に詳しい方で、カウントダウンタイマー終了と同時に他の作動をとめる設定(プログラムコード)をお知りのかたお助けねがいます。 また、すでに鳴っている(他のページ又は同じページ,controller内の)音楽をタイマーに合わせて止めることが不可能なら、タイマースタートボタンを押すと同時に音楽をスタートし、タイマー終了とともに音楽を停止するプログラムコードを教えていただけたら助かります。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
補足
ご回答ありがとうございます。 > これだと、新しくAVAudioPlayerを作ってループを停止させることになりますが……。既に鳴っているものを操作したいのですよね? 同一controller内で、タイマースタートボタンを押すと同時に音楽をスタートし、タイマー終了とともに音楽を停止するプログラムコードも教えていただけたら助かります。 よろしくお願いします。 ちなみに、-(IBAction)bgmplayEvent; でタイマースタートボタンにリンクさせて、タイマースタートとともに、音楽は確かにスタートしましたが、カウントダウンタイマー終了とともに(タイマー終了時のイベントとして)、音楽をstopさせるプログラムコードを下記のようにいれてみましたが、コードが間違っているようで、音楽はstopしませんでした。 タイマー終了時のイベントとして、アラートメッセージの提示とともに音楽停止のコードを下記のようにをいれました。アラートメッセージは確実に出ましたが、音楽は、停止しませんでした。 if (RestTime == 0) { timeflag = false; NSString *bgmPath = [[NSBundle mainBundle] pathForResource:@"xxxx"ofType:@"mp3" ]; NSURL *bgmUrl = [NSURL fileURLWithPath:bgmPath]; sound = [[AVAudioPlayer alloc] initWithContentsOfURL:bgmUrl error:nil]; [sound setNumberOfLoops:-1]; [sound stop]; alert1 = [ [UIAlertView alloc] initWithTitle:@"xxxxxx" message:@"xxxxxxxxxxxxxx" delegate:self cancelButtonTitle:@"xx" otherButtonTitles:nil]; [alert1 show]; [alert1 release]; この場合の音楽を停止する正しいプログラムコードを具体的に教えていただければ、助かります。 > 最初に再生をするときに作ったAVAudioPlayerをインスタンス変数などに入れて保管しておき、それをstopしてみてください。 確かに、他のページ、controller内で既に鳴っている音楽もカウントダウンタイマーで止めたいのですが、< インスタンス変数などに入れて保管しておき > 具体的なプログラムコードを教えていただければ助かります。 < インスタンス変数など >というのが、具体的にわからないので、ご教授お願い致します。 よろしくお願いします。