我正在使用 SimpleAudioEngine 在我的 cocos2D 应用程序中播放声音。我有一种情况是在点击按钮时继续射击子弹并在射击子弹时播放声音。 有时当我连续点击拍摄按钮时,游戏场景会抽搐。当我整合声音时,这就开始发生了。
这是我在点击按钮时使用的代码:
-(void)rocketButtonTapped:(id)sender
{
[[SimpleAudioEngine sharedEngine] playEffect:@"rocket_fired.wav"];
NSLog(@"Pencil Rocket");
if(int_pencilRocketTagCount>=220)
{
int_pencilRocketTagCount=215;
}
[self performSelector:@selector(shootPencilRocket)];
}
请建议我一条出路...在此先感谢..
最佳答案
在游戏开始之前,执行以下操作:
[[SimpleAudioEngine sharedEngine] preloadEffect:@"rocket_fired.wav"];
这会将效果加载到内存中。 如果这不能解决问题,那么问题可能出在其他地方。例如,如果火箭发射的声音有几秒长,那么同时播放的音效太多,这可能是个问题。此外,通过 NSLog 或 CCLOG 连续记录到调试控制台的速度很慢,并且很容易导致帧率下降。
它也可能有助于降低音质。 22 甚至 11 kHz 的采样率对于(短)音效来说已经足够了,44 kHz 是浪费的,因为它分别增加了 2 或 4 倍的内存使用量。如果效果文件使用立体声 channel ,将其转换为单声道以将大小减半。效果使用的内存越少,对播放它的硬件造成的压力就越小。
关于iphone - SimpleAudioEngine 需要时间来播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11448935/