我有一个简单的UIButton,一旦点击,播放1秒的声音。我希望能够非常快速地点击该按钮,并且可以像人类一样多次产生这种声音。
我目前已经开始运行了包括,也许这就是罪魁祸首......而且,我正在深入研究苹果的参考资料,无法找到UIButton响应每个事件的速度以及如何快速的信息,如果有的话,我可以控制和操纵这个值。
我应该切换到不同的音频框架,如“音频工具箱”,还是有办法加快速度,或者指示按钮接受第二次和第三次按下,而第一次按下的动作仍然是正在进行中。
喝彩!
〜NIR。
答案 0 :(得分:0)
创建一种与按钮处理程序方法分开播放声音的方法。假设你称之为playSound
。在您的按钮处理程序中,使用以下命令在后台执行该方法:
[self performSelectorInBackground:@selector(playSound) withObject:nil];
这会产生额外的开销,在它播放声音之前产生一个线程。如果您想加快速度,请创建一个工作线程池并使用:
[self performSelector:@selector(playSound)
onThread:nextThread
withObject:nil
waitUntilDone:NO];
创建工作线程池:
-(void)stillWorking {
NSLog(@"Still working!");
}
-(void)workerThreadMain {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
NSTimer *threadTimer = [NSTimer scheduledTimerWithTimeInterval:10
target:self
selector:@selector(stillWorking)
userInfo:nil
repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:threadTimer forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] run];
[pool drain];
}
-(NSArray*)createWorkerThreads {
NSMutableArray *threadArray = [[[NSMutableArray alloc] initWithCapacity:10]autorelease];
NSThread *workerThread;
for (i=0;i<10;i++) {
workerThread = [[NSThread alloc]initWithTarget:self
selector:@selector(workerThreadMain)
object:nil];
[workerThread start];
[threadArray addObject:workerThread];
}
return [NSArray arrayWithArray:threadArray];
}
(此代码未经测试,可能需要一些调试,但它应该让您朝着正确的方向前进。)