gcs*_*str 2 iphone cocoa-touch
我正在开发一个应用程序,用户可以点击多个产生声音的命中区域.
但结果是有点滞后,当多个声音同时开始时,声音以难看的延迟播放.
我正在为每个声音使用AVAudioPlayer实例.有没有更好的方式来播放声音并防止这种滞后?
这是代码:
#import "MBImageView.h"
#import <AVFoundation/AVFoundation.h>
@implementation MBImageView
-(void)awakeFromNib
{
NSURL* audioFile = [NSURL fileURLWithPath[[NSBundlemainBundle] pathForResource:@"shaker"
ofType:@"caf"]];
AudioServicesCreateSystemSoundID((CFURLRef)audioFile, &shortSound);
}
- (id)initWithImage:(UIImage *)image{
return self;
}
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
AudioServicesPlaySystemSound(shortSound);
}
@end
Run Code Online (Sandbox Code Playgroud)
问候.
在runloop结束后,大多数声音(AVAudioPlayer和AudioServices)正在播放.也就是说,你说游戏,他们排队等待比赛,他们不会立即开始比赛.
如果您想要无滞后声音,请使用音频单元:
要提供最低延迟的音频,尤其是在同时输入和输出(例如VoIP应用程序)时,请使用I/O单元或语音处理I/O单元.请参阅"iPhone OS中的音频设备支持".
您可能还想查看Audio Toolbox:
使用Audio Toolbox框架播放具有同步功能的音频,访问传入音频的数据包,解析音频流,转换音频格式以及通过访问单个数据包录制音频.有关详细信息,请参阅Audio Toolbox Framework Reference和SpeakHere示例代码项目.
| 归档时间: |
|
| 查看次数: |
2001 次 |
| 最近记录: |