2015-01-23 5 views
0

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

Как я могу воспроизводить музыку в фоновом режиме непрерывно, пока звуковой эффект от объекта воспроизводится?

У меня уже есть эти сценарии ...

Card сценария ...

on openCard 
    play "backgroundmusic.wav" looping 
end openCard 

кнопка (или любой объект) ...

on mouseup 
    play "sound.wav" 
end mouseup 

Как играть эти звуки вместе ?


Update: Я нашел игру закачанный в Game Jam. Эта игра заняла первое место. Когда я играю в игру, звук был потрясающим, потому что он имеет фоновую музыку и звуковые эффекты. Но владелец этой игры не загружает файл стека livecode, чтобы изучить его. Игра была названа Space Shooter Game. Звуки этой игры - то, что я ожидаю.


Примечание: Как я понял из ответов, используя player объект может быть работа. Но для этого требуется QuickTime, которого у меня нет на моем компьютере. Я хочу также, чтобы звук мог воспроизводиться на мобильных устройствах.

ответ

0

В LiveCode forums они предлагают использовать игровые объекты на карте и сообщать им, чтобы они играли.


В HyperCard вы можете установить для этого свойство soundChannel. Вы проверили в документации LiveCode, поддерживает ли она это? Документы для команды play и свойства the sound также могут помочь. Возможно, в них есть намеки. FWIW, в HC

set the soundChannel to 1 
play "BackgroundMusic" 
set the soundChannel to 2 
play "SoundEffect" 

будет воспроизводить звуковой эффект и музыку в фоновом режиме одновременно. Может быть, так оно и работает в LiveCode?

+0

Это не работает, фоновая музыка все же останавливается после нажатия на кнопку (звуковой эффект). Кроме того, я не использую HyperCard. – Mai

+0

Извините, я не очень часто использую LiveCode, но так как это клон HyperCard, он обычно работает, чтобы просто предложить, что бы вы делали в HC :-) Думаю, здесь они решили сделать свое дело. – uliwitness

+0

Добавлено предложение, которое я нашел по googling для 'livecode play одновременного звука'. – uliwitness

0

Мультимедийные возможности проходят через трансформацию. Раньше все было построено вокруг QuickTime (ну почти все), и вам нужно было добавить элемент управления плеером для каждого одновременного звука. В настоящее время весь фонд изменяется в компании Apple упали QuickTime, но если вы разработать для рабочего стола вы все равно должны (опять же) быть в состоянии добавить объект игрока, а затем использовать:

start player "name of player" 

Вы также можете создать объект игрока динамически

create player "my player"" 

, а затем использовать

set the filename of player "my player to "/path/to/your/audio/file" 

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

+0

Я попытался добавить объект 'player', но теперь фоновая музыка больше не воспроизводится. Я думаю, это потому, что мой файл не поддерживается для этого игрока или что-то еще. Я использую файл .wav в качестве фоновой музыки. – Mai

+0

На какой платформе вы работаете? Новый объект игрока должен использовать собственный плеер на каждой платформе. Поэтому я не вижу, чтобы это было проблемой. НО У меня была проблема, если у нее была странная частота дискретизации со старым игроком. – hliljegren

+0

Я использую livecode 7.0 в окнах. – Mai

1

Поскольку это свойство, свойство soundChannel не действует в LiveCode и предоставляется только для совместимости с Hypercard.

В настоящее время на рабочем столе есть два способа выполнения многоканального звука: 1) воспроизведение импортированных звуков в качестве одного канала и использование объекта игрока в качестве второго канала или 2) использование двух игровых объектов.

Как правило, хорошим вариантом является импорт коротких звуков в качестве звуковых эффектов в стек, который воспроизводится только один раз, и резервировать объект проигрывателя для фоновой музыки. Импортированные звуки обычно воспроизводятся с наименьшей задержкой, однако вы не можете воспроизводить несколько импортированных одновременно - попытка воспроизведения второго звука во время первого воспроизведения остановит первый, чтобы воспроизвести второй. Если вам нужно играть в асинхронные звуковые эффекты, этот параметр не будет работать; вы должны использовать комбинацию параметров воспроизведения.

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

Также обратите внимание, что действительно бесшовное воспроизведение дорожки затруднено, если не невозможно - LiveCode в какой-то момент станет восприимчивым к системному событию, которое вызовет небольшую паузу между циклами. Некоторое время назад Тревор Девор сделал дополнение к своему расширенному QuickTime внешнему, что позволило использовать истинный бесшовный цикл аудио. Однако, когда Apple избавляется от QuickTime, неизвестно, насколько длиннее этот вариант будет полезен.

С усовершенствованиями, которые ребята RunRev привносят в двигатель, скорее всего, мы увидим улучшение с воспроизведением и управлением мультимедиа, надеюсь, скорее раньше, чем позже.

+0

Я попробовал объект 'player', но мой звук не воспроизводится (прокомментировал также ответ Хлильгерена). Я не знаю, в чем проблема, хотя я жду, пока звук загрузится в течение очень долгого времени. – Mai

+0

Какую версию LiveCode вы используете? В последних версиях (v. 6.7.1 и 7.0.1) появилась ошибка, которая помешала команде 'start player' работать. Об этой ошибке сообщалось и исправлено для предстоящих 6.7.2 и 7.0.2. Если вы не хотите использовать предварительные версии, вы можете использовать обходное решение 'set playRate игрока" myplayer "до 1'. – Devin

+0

@Devin Я использую Livecode 7.0.0 – Mai

0
on openCard 
    put specialFolderPath("engine") & "/soundfx/backgroundmusic.wav" into tSound 
    mobilePlaySoundOnChannel tSound, "Background", "looping" 
end openCard 

on mouseup 
    play "sound.wav" 
end mouseup 
+0

Пожалуйста, не просто отправляйте код без каких-либо дополнительных разъяснений. Кроме того, используйте код для правильного форматирования кода. – user1438038

Смежные вопросы