2012-11-22 9 views
0

J'ai créé une classe pour la gestion des sons. Mais j'ai un problème pour arrêter le son? Je ne peux pas envoyer de variable de playSound à stopSound AudioServicesDisposeSystemSoundID (soundID). Comment gérer cela? Je ne veux vraiment pas l'instancier ou je dois le faire?Variable de méthode statique

@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 

Répondre

1

soit Vous devrez passer l'id stopSound (le même que lorsque vous jouez le son), ou bien si votre lecteur audio joue seulement 1 son à la fois, stocker les soundID comme param statique la classe quand tu joues.

+0

et comment puis-je déclarer statique param? – alexhajdu

+0

'@interface TheClass: NSObject + (int) nombre; @ end' voir: http://stackoverflow.com/questions/6035824/objective-c-static-class-variables – cleverbit

0

Vous pouvez créer soundID comme Ivar, quelque chose comme:

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

Autre façon l'utiliser comme variable globale

+0

Je l'ai essayé en tant que première option avant de poster sur stackverflow. Variable d'instance accédée dans la méthode de classe. – alexhajdu

Questions connexes