iphone - SimpleAudioEngine 需要时间来播放声音

标签 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)];  
}

请建议我一条出路...在此先感谢..

最佳答案

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

[[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/

相关文章:

ios - iOS和Cocos2d:收到内存不足警告,只有20 MB的分配并且没有正在运行的其他应用程序

iphone - 如何在 tmx map 中提取折线点?

iphone - 编写认证系统

iphone - iOS 上 RAM 中连续数据的安全大小?

ios - 在 UICollectionView 中指定单元格之间的宽度和边距

ios - APS 缺少权利

iphone - UIViewController View 即使在可见时也被卸载

iphone - 防崩溃 NSDictionary

ios - xcode 模拟器没有出现 - 可以重新安装吗?

cocos2d-iphone - ADBannerView 委托(delegate)方法从不触发