0

我创建了处理声音的类。但我有问题停止声音?我无法将变量从 playSound 发送到 stopSound AudioServicesDisposeSystemSoundID(soundID)。如何处理?我真的不想实例化它还是我必须实例化它?

@implementation SoundPlayer
+(void)playSound:(NSString *)filename ofType:(NSString *)extension {
    SystemSoundID soundID;
    NSString *soundFile = [[NSBundle mainBundle] pathForResource:filename ofType:extension];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
    AudioServicesPlaySystemSound(soundID); // error - soundID is undeclared
}

+(void)stopSound
{
    AudioServicesDisposeSystemSoundID(soundID);
}

@end
4

2 回答 2

1

您必须将 id 传递给 stopSound(与播放声音时相同),或者如果您的音频播放器一次只播放 1 个声音,则在播放时将 soundID 作为静态参数存储在类中。

于 2012-11-22T12:21:32.913 回答
0

您可以将 soundID 创建为 ivar,例如:

@interface SoundPlayer(){
     SystemSoundID soundID;
}
@end

其他方式将其用作全局变量

于 2012-11-22T12:21:57.093 回答