4

2 つの異なるボタン プレス サウンド アクションがあります。1 つのボタンを押すと 1 つのサウンドが再生され、もう 1 つのボタンを押すと最初のサウンドが停止し、別のサウンドが再生されます。これを行うにはどうすればよいですか?

ありがとう、

-(void) onButtonPressAlbina {
    [soundID2 stop];     
    NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"albina" ofType:@"m4a"];
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);
    AudioServicesPlaySystemSound (soundID);
}

-(void) onButtonPressBalena {
    NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"balena" ofType:@"m4a"];
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);
    AudioServicesPlaySystemSound (soundID);    
}
4

1 に答える 1

3

" " で再生中のサウンドを止めることはできませんが、代わりにAudioServicesPlaySystemSound" " を使用することはできます。AVAudioPlayer

オブジェクトで" " への参照を保持しておけば、停止する必要があるときに" "AVAudioPlayerを呼び出すことができます。stop

遊ぶ

#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVAudioPlayer.h>
AVAudioPlayer  *player;

// ...

NSString *path;
NSError *error;
path = [[NSBundle mainBundle] pathForResource:@"albina" ofType:@"m4a"];
if ([[NSFileManager defaultManager] fileExistsAtPath:path]) 
{    
  player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
  player.volume = 0.5f;
  [player prepareToPlay];
  [player setNumberOfLoops:0];
  [player play];    
} 

止まる

if (player != nil)
{
  if (player.isPlaying == YES)
    [player stop];
}
于 2013-03-12T19:44:38.243 に答える