SystemSoundID停止声音



在我的应用程序中,我将按钮设置为键盘。每个按钮的作用类似于钢琴键,当你按住按钮时,声音会播放,但当你松开时会停止。对于这种方法,我使用了两个IBActions。一个用于Touch Down(声音播放)和Touch Up Inside(声音停止)。我正在使用SystemSoundID来播放声音,因为AVAudioPlayer有延迟播放。唯一的问题是,当我按下按钮时,声音播放得很好,但一旦我松开触摸,我的应用程序就会崩溃。以下是我的代码:

.h文件:

SystemSoundID *soundID;

.m文件:

- (IBAction)ASoundStart:(id)sender { 
     NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"P1:4t" ofType:@"mp3"];
     AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
     AudioServicesPlaySystemSound(soundID);
     [soundFile release];
 }
 - (IBAction)ASoundStop:(id)sender {
     AudioServicesDisposeSystemSoundID(soundID);
 }

我认为您将SystemSoundID错误地视为对象。它只是一个整数。

如果您查看AudioServicesPlaySystemSound的声明,请注意它的参数是SystemSoundID,而不是SystemSoundID *

void AudioServicesPlaySystemSound (
   SystemSoundID inSystemSoundID
);

所以,如果您只是将头中的SystemSoundID *soundID更改为SystemSoundID soundID,我相信它应该会起作用。

快乐的编码。

相关内容

  • 没有找到相关文章

最新更新