我有一个播放两种声音的程序。我希望用户知道哪些声音正在播放,所以我有两个大按钮图像。我有三种不同的观点,我想交换 - 两个按钮都是红色的(没有任何播放),两个按钮之一是绿色的(显示哪个播放)。在Objective-C播放声音之前更改视图
我得到的主要问题是我的声音在视图交换之前播放并完成! (在播放声音之前,我正在使用[window setContentView:firstSound])
修改后的视图最终会显示出来,但只有在播放wavs的方法结束后才会显示。
我使用NSSound播放声音文件(它们都是短wav文件,所以我认为它适用)
任何人都知道我做了什么错?或者如果有另一种方式我可以做到这一点?谢谢堆!
编辑:我遵循了建议,以便只有图像被更改(而不是视图),但也会发生同样的问题。声音播放结束后会发生更新。
下面的代码:
-(void)readWavs{
//[window setContentView:firstWav];
[redButton setHidden:YES];
NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"fish" ofType:@"wav"];
NSSound *sound = [[NSSound alloc] initWithContentsOfFile:resourcePath byReference:YES];
[sound play];
sleep(3); //needed so that the sound will actually play
[sound stop];
[sound release];
//[redButton setHidden:NO];
//[window setContentView:testView];
sleep(2);
//[window setContentView:secondWav];
NSString *resourcePath2 = [[NSBundle mainBundle] pathForResource:@"fish" ofType:@"wav"];
NSSound *sound2 = [[NSSound alloc] initWithContentsOfFile:resourcePath2 byReference:YES];
[sound2 play];
sleep(3);
[sound2 stop];
[sound2 release];
}
“的”绿色按钮播放声音之前应显示出来,但它只做方法是这样做了。
它可能有助于发布播放声音的代码并交换视图。 – PengOne
当然可以:)我已经更新了它。 – Moonlight293