如何公开类成员或如何实现作用于这些成员的方法

时间:2011-07-11 17:49:42

标签: iphone ios audio

我试图阻止来自另一个班级的声音。 一旦应用程序打开,声音就会开始播放并设置为循环播放,除非“用户”更改设置并将声音设置为OFF。

这只能在启动应用程序时启动,它会检查设置声音是否设置为“ON / OFF”,但我想在设置中更改时会这样做。

这就是我到目前为止......

的Firstclass

// grab the path to the caf file
NSString *soundFilePath =
[[NSBundle mainBundle] pathForResource: @"Menu_Loop"
                                ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
// create a new AVAudioPlayer initialized with the URL to the file
AVAudioPlayer *newPlayer =
[[AVAudioPlayer alloc] initWithContentsOfURL: fileURL
                                       error: nil];
[fileURL release];
// set our ivar equal to the new player
self.player = newPlayer;
[newPlayer release];
// preloads buffers, gets ready to play
[player prepareToPlay];
player.numberOfLoops = -1; // Loop indefinately
if ([SoundSwitch isEqualToString:@"1"]){
[self.player play]; // Plays the sound
}else{
[self.player stop]; // Stops the sound
}

播放声音。 如果我想简单地停止它:

[self.player stop]

但是这只适用于同一个课程,我怎样才能让它在另一个课堂上工作?

2 个答案:

答案 0 :(得分:0)

我会在黑暗中拍摄,因为我不知道那些苹果的东西,但我认为你必须创建AVAudioPlayer的实例,你想要操纵你的声音。如果您提供的这个课程可以在第二个地方访问,您想要播放/停止声音,也许您可​​以将您的“玩家”成员暴露给外部使用?或者什么可以更好地添加到这个类方法PlaySound(),StopSound()和它们允许外部代码播放声音。

示例代码以及谷歌的一些帮助:)

- (void)playSound:{
    [self.player play];
}

- (void)stopSound:{
    [self.player stop];
}

现在您可以从班级外调用playSoundstopSound方法

答案 1 :(得分:0)

我会使用NSNotifications,以便您可以从应用程序的任何位置发送停止或播放通知。你就是这样做的:

在FirstClass的init方法中

执行此操作:

//Notification for stoping
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stop) name:@"StopSound" object:nil];
//Notification for playing
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(play) name:@"PlaySound" object:nil];

现在从选择器创建这两个方法(停止方法和播放方法)

-(void)stop{
   [self.player stop]
}

-(void)play{
   [self.player play]
}
在dealloc中

记得删除通知观察者:

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"StopSound" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"PlaySound" object:nil];

现在,您可以从应用程序的任何位置发送停止或播放声音的通知

//Stop
[[NSNotificationCenter defaultCenter] postNotificationName:@"StopSound" object:nil];
//Play
[[NSNotificationCenter defaultCenter] postNotificationName:@"PlaySound" object:nil];