0

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

请给我一个出路...提前谢谢..

4

1 回答 1

2

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

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

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

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

于 2012-07-12T09:41:40.277 回答