我在简单的游戏中编码,我移动一个广场,每当广场移动时都会发出声音效果。 (就像走路的声音)
问题是播放声音效果导致显示器刷新滞后。好像它对发动机的性能太高了。 我问是否有办法正确播放重复但不连续的声音(这不是一个真正的循环,但如果走路是无穷无尽的话可能会这样)
这里我的功能: ...我初始化音频对象的方式
moveSound = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
这里是调用它的函数
...
{
moveSound.currentTime = 0;
[moveSound play];
}
这是一个很好的方法吗? THX
答案 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