Я работаю над приложением для iOS, которое работает с разными звуковыми фрагментами.Каждый фрагмент аудио привязан к отдельной кнопке (аналогично функциональности, которую вы видите в приложении на звуковой панели).
В простом приложении на звуковой карте у вас есть экземпляр объекта проигрывателя (AVAudioPlayer или узел проигрывателя AVAudioEngine), который срабатывает при каждом нажатии кнопки.
Если нажать buttonOne
, то sound1
начнет играть.
Если вы нажмете buttonOne
еще раз, пока sound1
все еще играет, текущий экземпляр прерывается и «заменяется» новым экземпляром sound1
, который начинается заново в начале.
Если вы нажмете buttonOne
, ТО затем нажмите buttonTwo
до того, как sound1
закончится, экземпляр sound1
будет прерван и заменен на sound2
, опять же, воспроизводится с начала.
Предположимвы пытаетесь включить перекрестное затухание между двумя звуками.Вы можете просто создать два экземпляра игрока, загрузить первый звук в player1
, а второй в player2
и сделать перекрестное затухание между ними.
Основываясь на этом, предположим, что вы пытаетесь одновременно воспроизводить разные комбинации звуков.Либо идея о том, что большое количество звуков (возможно, целая звуковая панель) могут воспроизводиться без прерывания друг друга.Или, возможно, возможность воспроизведения нескольких звуков одновременно, например, sound1
- это музыкальная кровать, а sound2
... soundXX
- это звуковые эффекты, которые должны воспроизводиться через музыкальную кровать без прерывания.it.
ВОПРОСЫ: какова наилучшая стратегия проектирования для управления экземплярами вашего игрока в этой ситуации?Предположим, у вас есть сетка кнопок 5 х 5 на вашей деки.Если, гипотетически, вы сможете воспроизводить все 25 звуков одновременно, потребуется ли вам инициировать 25 экземпляров игрока при настройке?(это кажется очень анти-СУХОЙ и не особенно эффективным).Или есть какой-то способ динамического управления количеством нужных вам экземпляров (может быть, с помощью переменной lazy?), Чтобы дополнительные экземпляры создавались только по мере необходимости, например, когда у вас воспроизводится x звуков и вы запускаете другой, дополнительный экземплярсоздан, чтобы содержать недавно добавленный звук?