Блоги :: Колонка пользователя vanek-ridal :: Игровой движок Phoenix Game Engine - Часть 4

 
 
 
PSP Club
AllHits.Ru - Прокачай свою PSP на максимум!
Разделы портала
Поиск




Авторские колонки о PSP - Расскажи всем о своих впечатлениях
Колонки / Блоги пользователей PSP-Club.Ru

Игровой движок Phoenix Game Engine - Часть 4

Автор: vanek-ridal | Пишет Инструкции Инструкции | Опубликовано 28.01.2010 15:41

Игровой движок Phoenix Game Engine - Часть 4

Привет.
Продолжаю писать о Phoenix Game Engine.
Это уже четвёртая часть, остальные Вы можете найти здесь:

Игровой движок Phoenix Game Engine - Часть 3
Игровой движок Phoenix Game Engine - Часть 2
Игровой движок Phoenix Game Engine - Часть 1

------------------------------------------------------------------------

Давайте на этот раз начнём с музыки.

9. Музыка и звуки

9.1. Воспроизведение MP3

PGE может воспроизводить музыку в формате MP3, однако существует ограничение:
дорожка должна иметь частоту дискретизации не выше 44 кГц.

Чтобы начать воспроизведение дорожки, нужно вызвать следующую функцию:
Цитата:

pge.mp3.play(имя_файла)


Дорожка сначала чуть-чуть подгрузится, а затем начнётся воспроизведение.
Воспроизведение происходит в фоновом режиме, т.е. нам ничего не нужно делать
для его поддержания, за подгрузку и воспроизведение дорожки отвечает железо PSP.

Нельзя проигрывать более одной mp3-дорожки одновременно,
но можно воспроизводить сразу несколько звуков wav, но об этом потом.

Для того, чтобы приостановить воспроизведение дорожки, нужно вызвать эту функцию:
Цитата:

pge.mp3.pause()


Чтобы воспроизведение продолжилось, нужно просто вызвать ту же самую функцию.
Прежде чем идти дальше, нужно Вам кое-что рассказать.

Есть одна неприятная вещь. Заключается она вот в чем:
если в нашей программе приостановить воспроизведение mp3
и перевести PSP в спящий режим, а затем "разбудить" PSP,
то воспроизведение дорожки продолжится само по себе,
не смотря на то, что мы поставили его на паузу.
К примеру, в игре Need For Speed: Most Wanted 5.1.0 наблюдается такой же эффект.
Придется как-нибудь выкручиваться из этого, либо смириться, если это не так уж и важно в Вашей игре.

Если Вам нужно совсем прекратить воспроизведение дорожки, воспользуйтесь следующей функцией:
Цитата:

pge.mp3.stop()


Если Вы хотите зациклить воспроизведение (т.е. чтобы после окончания дорожки воспроизведение начиналось заново), то к Вашим услугам следующая функция:
Цитата:

pge.mp3.loop(флаг)


Флаг - это логический параметр (true или false).
Если установить в true, зацикливание включится, а если в false - выключится.
Таким образом, функция pge.mp3.loop предназначена как для включения, так и для отключения зацикливания.

Кроме всего этого, можно прочитать ID3-теги дорожки (название, альбом, исполнитель и т.п.).
Для этого существует переменная mp3info, у которой есть несколько методов:

mp3info:title() - возвращает заголовок (название) дорожки
mp3info:artist() - возвращает исполнителя
mp3info:album() - возвращает название альбома
mp3info:year() - возвращает год
mp3info:comment() - возвращает комментарий к дорожке
mp3info:genre() - возвращает жанр песни
mp3info:id3version() - возвращает версию ID3

Если тот или иной тег отсутствует в дорожке, то соответствующий метод будет возвращать пустую строку.

9.2. Воспроизведение WAV

PGE может воспроизводить звуки из WAV-файлов.
Ограничения:

- частота дискретизации должна быть 22 кГц
- формат аудио должен быть PCM

Если нужный Вам wav-файл не соответствует этим требованиям,
воспользуйтесь каким-нибудь аудиоконвертером, иначе звук не будет проигрываться,
может даже произойти зависание PSP.

Можно использовать wav-файлы с размером аудио образца 8 или 16 бит,
также можно использовать 1-канальные или 2-канальные wav-файлы (т.е. моно- или стерео-звуки).

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

Чтобы загрузить "wav-ку", пользуйтесь следующей функцией:
Цитата:

pge.wav.load(имя_файла)


Эта функция возвращает указатель на загруженный звук wav, либо nil при неудаче.

Пример:
Цитата:

mySound = pge.wav.load("test.wav")


Чтобы воспроизвести звук, используйте эту функцию:
Цитата:

pge.mp3.play(указатель)


Либо просто метод play:
Цитата:

указатель:play()


Пример:
Цитата:

mySound:play()


Чтобы остановить воспроизведение конкретного звука:
Цитата:

указатель:stop()


Чтобы включить/отключить зацикливание для конкретного звука:
Цитата:

указатель:loop()

Обратите внимание, эта функция работает НЕ аналогично функции pge.mp3.loop.
Эта функция не принимает параметров.
Она включает зацикливание, если оно отключено и отключает зацикливание, если оно включено.

Чтобы остановить воспроизведение ВСЕХ звуков:
Цитата:

pge.wav.stopall()


------------------------------------------------------------------------

10. Некоторые функции

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

10.1. Модуль pge

Цитата:

pge.delay(число_микросекунд)

Задерживает выполнение скрипта на указанное число микросекунд.
(1 секунда = 1 000 000 микросекунд).
Функция, честно говоря, бесполезная - нет такой ситуации, где она бы пригодилась.
Не возвращает значений.

Цитата:

pge.exit()

Останавливает выполнение PGE.
Не возвращает значений.

10.2. Модуль pge.controls

Цитата:

pge.controls.disable()

Эта функция позволяет заблокировать кнопки (чтобы программа не могла определять нажатия кнопок).
Не возвращает значений.

Цитата:

pge.controls.enable()

Эта функция позволяет разблокировать кнопки после того, как они были заблокированы предыдущей функцией.
Не возвращает значений.

Цитата:

pge.controls.pressedany()

Эта функция определяет, нажата ли ЛЮБАЯ кнопка.
Возвращает логическое значение (true или false).

Цитата:

pge.controls.heldany()

Определяет, удерживается ли ЛЮБАЯ кнопка.
Возвращает логическое значение (true или false).

10.3. Модуль pge.font

Цитата:

pge.font.printcenter(шрифт,y,цвет,текст)
или
шрифт:printcenter(y,цвет,текст)

Печатает текст как обычный font:print(), но посередине экрана.

Цитата:

pge.font.measure(шрифт,текст)

Определяет, сколько пикселей занимает заданный текст в ширину, написанный заданным шрифтом.
Возвращает целочисленное значение.

Цитата:

pge.font.height(шрифт)

Определяет высоту самого высокого символа в заданном шрифте.
Возвращает целочисленное значение.

Ну и хватит пока что этих функций.
Но если Вам мало, идите по ссылке: http://www.luaplayer.org/?page_id=86
Там расписаны эти и другие функции PGE, но на английском.

------------------------------------------------------------------------

Это ещё не всё. Я буду дальше писать, если мне не помешает моя очень сильная лень.
Кстати, буду очень признателен, если кто-нибудь поможет мне дописать описание функций.
Нужно просто переписать их с luaplayer.org и перевести. Если что, стучите в личку.

------------------------------------------------------------------------

Специально для PSP-Club.Ru

С Вами был vanek-ridal, всем спасибо за внимание!
PSP Club Vote Bar Проголосовать противПроголосовать за!
Текущий рейтинг +33 Голосов против 3 Голосов за 36
Для того чтобы добавить комментарий, вам необходимо авторизоваться.
Это не займет много времени, а авторизованные пользователи получают доступ к расширенным возможностям клуба.


 
 
Контакты | Обратная связь | Реклама на сайте | RSS RSS Лента. Сводка последних добавлений игр для PSP
MaxiPack Web Projects © 2021. При копировании материалов ссылка на сайт обязательна.
"PSP" и "Play Station" - зарегистрированные торговые марки корпорации Sony Computer Entertainment.