gpt4 book ai didi

iphone - 如何公开类成员或如何实现对那些成员起作用的方法

转载 作者:行者123 更新时间:2023-12-03 02:24:45 25 4
gpt4 key购买 nike

我试图停止另一个类的声音。
一旦应用程序打开,声音就会开始播放,并被设置为循环播放,除非“用户”更改设置并将声音关闭。

这仅在应用程序启动时起作用,它会检查设置声音是否设置为“ON / OFF”,但我希望更改设置后是否会这样做。

这是我到目前为止所拥有的...

头等舱

// 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]

但这只能在同一类使用,我如何才能在另一类使用呢?

最佳答案

我将使用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];

现在,从选择器中创建这两个方法(stop方法和play方法)
-(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];

关于iphone - 如何公开类成员或如何实现对那些成员起作用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6654218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com