2014-12-31 2 views
1

У меня есть звуковой эффект длиной 3 секунды, который нужно воспроизводить повторно в течение некоторого времени от 10 до 15 секунд. Реализуется, как показано ниже:Воспроизведение нескольких звуковых эффектов в cocos2d-x

SimpleAudioEngine::sharedEngine()->playEffect(powerUpSound, true); 

Но когда я играю еще один звуковой эффект, предыдущий звук (powerUpSound) эффект прекращается.

SimpleAudioEngine::sharedEngine()->playEffect(starsSounds, false); 

Как я могу играть в них одновременно?

Я использую Cocos2d-x v2.2.3

+0

Если вы не используете фоновую музыку, вы можете сыграть одну из них с помощью SimpleAudioEngine :: sharedEngine() -> playBackgroundMusic(); 'Используете Android-устройство для запуска своего приложения? – Nadarian

+0

Да, я использую Android-устройство, и у меня есть фоновая музыка также в игре, поэтому я не могу играть в качестве фоновой музыки. – gameChef

+0

Я знаю, что есть проблема с классом Android SoundPool, но это касается размера и продолжительности файла, но ваши файлы выглядят нормально. Только обходной путь, который приходит мне на ум, состоит в том, чтобы создать новый экземпляр SimpleAudioEngine, а затем воспроизвести звук – Nadarian

ответ

1

Я не думаю, что это очень хорошее решение, но то, что я делаю обход SimpleAudioEngine и использовать все, что он закреплять в играть звук:

#include "AudioEngine.h" 

std::string music_path = "gethit.mp3"; 
experimental::AudioEngine::play2d(music_path.c_str()) 

Я думаю, что это утечка памяти или что-то в этом роде, поэтому вам нужно быть осторожным, когда вы ее используете. Все, что я знаю, это то, что он позволяет воспроизводить сразу несколько звуковых эффектов на Android.

+0

На самом деле, если кто-то скажет мне, почему это плохая идея, я бы с удовольствием узнал. – TankorSmash