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 ответ
Перед началом игры сделайте это:
[[SimpleAudioEngine sharedEngine] preloadEffect:@"rocket_fired.wav"];
Это загружает эффект в память. Если это не решит проблему, то проблема может быть в другом месте. Например, слишком много звуковых эффектов, воспроизводимых одновременно, если звук ракетного огня длится несколько секунд, это может быть проблемой. Также непрерывная запись в Debug Console через NSLog или CCLOG медленная и может легко привести к падению частоты кадров.
Это также может помочь снизить качество звука. Частоты дискретизации 22 или даже 11 кГц достаточно для (коротких) звуковых эффектов, 44 кГц расточительны, поскольку увеличивают использование памяти в 2 или 4 раза соответственно. Если файл эффекта использует стереоканалы, преобразуйте его в моно, чтобы уменьшить размер пополам. Чем меньше памяти использует эффект, тем меньше он напрягает аппаратное обеспечение, играющее его.