|
Май
19
|
Закончим эту серию статей, добавив к игре звуковое сопровождение. Поскольку это уроки для новичков, я не буду вдаваться в связанные с OpenAL и Audio Queues сложности. Сегодня мы займемся воспроизведением коротких звуков (менее 30 с). При отсутствии потребности в фоновой музыке это самый простой способ работы с аудио. (Конечно, можно было бы поставить 30-секундный фрагмент на циклическое воспроизведение, но до такого позора мы не опустимся.)
Проблема при таком подходе заключается в том, что одновременно может проигрываться не более одного аудиофайла. Что ж, приступим… Нам понадобится код прошлого урока который мы можно скачать по [этой ссылке] (воспользуйтесь своим или загрузите новый вариант). Сегодня мы будем работать с двумя звуками: один — для удара по мячу, второй — для набранного очка.
Вот звуковые файлы, которые нам потребуются:
Обратите внимание на расширение звуковых файлов — .caf . Для воспроизведения в iPhone это единственный приемлемый вариант. Поэтому Apple предусмотрела специальную утилиту для преобразования аудио в данный формат. Подробнее о ней можно прочесть [здесь]. Все достаточно просто - открываете терминал и вводите:
/usr/bin/afconvert -f caff -d LEI16 {INPUT} {OUTPUT}
где {INPUT} — путь к исходному аудиофайлу, а {OUTPUT} —файл, который будет сохраняться с расширением .caf.
Добавление к проекту аудиофайлов.
Для начала загрузите два файла и перетащите их в папку “Resources” внутри проекта. Если привыкли к порядку, создайте для них подпапку “Audio“. Обратите внимание, что опция копирования файлов в папку проекта должна быть помечена флажком.

Добавляем к проекту “AudioToolbox.framework”.
Поскольку к функциям мы будем обращаться именно через эту инфраструктуру, добавим к проекту и ее. Лучший способ обнаружит фреймворк на моем Mac — выполнить поиск. Щелкнув правой кнопкой на папке проекта “Frameworks“, выполните Add -> Existing Frameworks. В окне поиска наберите “AudioToolbox.framework” и после вывода результатов выделите нужный объект. (Поиск должен проводиться по всему компьютеру.)

Обнаружив искомый элемент, щелкните на кнопке “Add“. Можно приступать к программированию…
Добавляем описание заголовка.
Откройте файл “iTennisViewController.h” и добавьте код, как показано ниже.

Сначала выполняется импорт “AudioServices.h“. Это необходимо для вызова отвечающих за воспроизведение звуков функций. Следующим шагом декларируем два объекта “SystemSoundID“. В принципе это просто целые числа (можно было бы воспользоваться “int“, но в этом случае появляется предупреждение). Теперь открываем “iTennishViewController.m” и добавляем синтезирующий эти переменные код.
![]()
Настало время инициализировать наши звуковые объекты. Перейдите к методу “viewDidLoad” и добавьте представленный ниже код:

Все довольно просто. Первая строка получает путь к аудиофайлу. Следующая — преобразовывает его в “CFURLRef“. После этого загружаем нужный файл и привязываем его к конкретному идентификатору звука. Обратите внимание: мы передаем “&clappingFileID“. Передача параметров по ссылке (pass by reference) позволяет методу “AudioServicesCreateSystemSoundID” модифицировать эту переменную. Аналогичным способом загружаем звук удара по мячу. Теперь их можно воспроизвести.
Воспроизведение звуков.
Прослушать загруженные звуки очень просто. Вызываете метод “AudioServicesPlaySystemSound” и передаете ему звуковой идентификатор “soundID” нужного файла. Чтобы при изменении счета слышались овации, добавьте к методу “reset” приведенный ниже код:

Заметьте - передаваемый идентификатор “clappingFileID” указывает, что необходимо воспроизвести звук оваций. Чтобы при попадании ракеткой по мячу слышался звук удара, добавляем к “gameLoop” указанный ниже код.

Ничего сложного. Кнопкой “Build and Go” запускаем приложение и проверяем звук в игре. Урок окончен. Всем спаибо за внимание. Не забываем оставлять комментарии.



Март 31st, 2010 at 07:10
[...] 11:10 Привет всем!беру пример с этого сайта http://lookapp.ru/2009/05/19/iphone-sdk-tutorials17/ гружу на iphone а звука нет что может быть? Страницы [...]