目标C多次重复时声音滞后

时间:2010-05-25 19:31:13

标签: objective-c audio avaudioplayer lag

我在简单的游戏中编码,我移动一个广场,每当广场移动时都会发出声音效果。 (就像走路的声音)

问题是播放声音效果导致显示器刷新滞后。好像它对发动机的性能太高了。 我问是否有办法正确播放重复但不连续的声音(这不是一个真正的循环,但如果走路是无穷无尽的话可能会这样)

这里我的功能: ...我初始化音频对象的方式

moveSound = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];

这里是调用它的函数

...
 {
  moveSound.currentTime = 0;
  [moveSound play];
 } 

这是一个很好的方法吗?  THX

2 个答案:

答案 0 :(得分:1)

为了获得较低延迟的音频,您应该查看CoreAudio API

您的代码看起来像这样:

NSString *audioPath = [[NSBundle mainBundle] pathForResource:@"NameOfSound" ofType:@"caf"];
NSURL *audioURL = [NSURL fileURLWithPath:audioPath];
SystemSoundID soundId;
AudioServicesCreateSystemSoundID((CFURLRef)audioURL, &soundId);

soundId充当你创造的声音的句柄,所以每当你需要播放它时你会打电话

AudioServicesPlaySystemSound(soundId);

答案 1 :(得分:0)

好的,我发现了这个:

  

块引用    - (无效)setSound   {

CFBundleRef mainBundle = CFBundleGetMainBundle ();

CFURLRef soundFileURLRef = CFBundleCopyResourceURL (
                                            mainBundle,
                                            CFSTR ("squareMove"),// à mettre dans un xml ou plist
                                            CFSTR ("caf"),
                                            NULL
                                            );

AudioServicesCreateSystemSoundID (
                                  soundFileURLRef,
                                  &soundFileObject
                                  );
CFRelease(soundFileURLRef);

}

我发出的声音就像

  

AudioServicesPlaySystemSound   (soundFileObject);

太糟糕了,我们无法制作midi