我试图阻止来自另一个班级的声音。 一旦应用程序打开,声音就会开始播放并设置为循环播放,除非“用户”更改设置并将声音设置为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]
但是这只适用于同一个课程,我怎样才能让它在另一个课堂上工作?
答案 0 :(得分:0)
我会在黑暗中拍摄,因为我不知道那些苹果的东西,但我认为你必须创建AVAudioPlayer
的实例,你想要操纵你的声音。如果您提供的这个课程可以在第二个地方访问,您想要播放/停止声音,也许您可以将您的“玩家”成员暴露给外部使用?或者什么可以更好地添加到这个类方法PlaySound(),StopSound()和它们允许外部代码播放声音。
示例代码以及谷歌的一些帮助:)
- (void)playSound:{
[self.player play];
}
- (void)stopSound:{
[self.player stop];
}
现在您可以从班级外调用playSound
和stopSound
方法
答案 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];