Finch Audio Engine не открывает стандартное устройство OpenAL - PullRequest
0 голосов
/ 25 февраля 2011

У меня есть абстрактный класс, который инициализирует Finch для глобальной переменной Finch * engine в методе awakeFromNib следующим образом:

engine = [[Finch alloc] init];

Ни один изподклассы абстрактного класса переопределяют метод.Однако всякий раз, когда я пробую свою программу, Finch печатает «Finch: Не удалось открыть устройство OpenAL по умолчанию».в отладчике.Почему Финч не может получить устройство OpenAL по умолчанию?Насколько я могу сказать, я делаю все, как показано в их примере кода.

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Я только что столкнулся с той же проблемой.Для меня это было вызвано созданием объекта Finch в нескольких контроллерах представления.По какой-то причине второй, казалось, отменял первый, и я получал это сообщение об ошибке всякий раз, когда пытался воспроизвести звук.

Чтобы решить эту проблему, я просто создал один объект Finch в App Delegate, и теперь этоотлично работает во всем приложении.

Надеюсь, это поможет:)

0 голосов
/ 22 февраля 2012

Предупреждение, если вы выделяете несколько классов Finch:

В FISoundEngine метод dealloc вызывает closeAudioDevice. Это закрывает аудиоустройство OpenAL. И, как вы, вероятно, знаете, во всем приложении существует только одно устройство OpenAL!

Итак, это означает, что у вас может быть только один движок (и одна фабрика) для всего вашего приложения, или вы будете закрывать устройство в местах, где оно должно оставаться открытым.

Является ли это недостатком дизайна, я не знаю. Я предложил превратить Финча в класс Singleton, но моя идея была отклонена автором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...