我有两种不同的按键声音动作。当我按下一个按钮时它应该播放一个声音,当我按下另一个声音时,它应该停止第一个声音然后播放另一个声音,我该怎么做?
谢谢,
-(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);
}
答案 0 :(得分: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];
}