【发布时间】:2011-06-20 03:11:59
【问题描述】:
我有一个播放两种声音的程序。我希望用户知道正在播放哪种声音,所以我有两个大按钮图像。我想在三种不同的视图之间交换 - 一种是两个按钮都是红色的(没有播放),另一种是两个按钮之一是绿色的(显示哪个正在播放)。
我遇到的主要问题是我的声音在视图交换之前播放并结束! (我在播放声音之前使用 [window setContentView:firstSound])
更改后的视图最终会显示出来,但只有在播放 wav 的方法完成之后。
我正在使用 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];
}
绿色的“开启”按钮应该在声音播放之前出现,但只有在方法完成后才会出现。
【问题讨论】:
-
发布播放声音和交换视图的代码可能会有所帮助。
-
当然 :) 我现在已经更新了。
标签: objective-c view audio wav