SimpleAudioEngine需要时间来播放声音

时间:2012-07-12 09:34:10

标签: iphone ios cocos2d-iphone simpleaudioengine

我正在使用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)];  
}

请建议我出路...提前致谢..

1 个答案:

答案 0 :(得分:2)

在游戏开始之前,请执行以下操作:

[[SimpleAudioEngine sharedEngine] preloadEffect:@"rocket_fired.wav"];

这会将效果加载到内存中。 如果这不能解决问题,那么问题可能出在其他地方。例如,如果火箭发射声音长达几秒钟,那么同时播放的声音效果太多,这可能是一个问题。此外,通过NSLog或CCLOG连续记录到调试控制台的速度很慢,很容易导致帧速率下降。

它也可能有助于降低音质。对于(短)声音效果,22或甚至11 kHz的采样率就足够了,44 kHz是浪费的,因为它分别增加了2到4次内存使用量。如果效果文件使用立体声通道,请将其转换为单声道以将大小减小一半。效果使用的内存越少,硬件播放的负担就越小。