2010-05-13 1 views
6

Flash IDE способен внедрять многие типы несжатых звуковых файлов, включая wav, и предлагает дополнительное сжатие при публикации.Встраивание wav-файлов в проект AS3 Flash/Flex?

Тем не менее, тег [Embed], похоже, позволяет вставлять mp3-файлы. Неужели невозможно встроить несжатый wav-файл или мне не хватает какого-то волшебного, недокументированного mimeType?

Я надеялся на что-то вроде:

[Embed source="../../audio/wibble.wav" mimeType="audio/wav"] 

... но я получаю

no transcoder registered for mimeType 'audio/wav' 

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

Я удивлен, что хотя Flash IDE может вставлять несжатые звуковые данные, [Embed] не может, учитывая, что спецификация swf может содержать несжатые звуковые данные.

Любые берущие?

ответ

14

От LiveDocs - Basics of working with sound:

[...] Хотя существуют различные звуковых файлов форматов, используемых для кодирования цифрового аудио, ActionScript 3.0, Flash Player и AIR поддерживают звуковые файлы, которые сохраненный в формате . Они не могут напрямую загружать или воспроизводить звуковые файлы в других форматах , таких как WAV или AIFF. [...]

Но, видимо, существует обходное решение. Проверьте сообщение # 3 в this thread from actionscript.org:

Ответ на себя в случае, если кто имеет тот же вопрос в будущем и в поисках ответа.

Я не могу найти прямой поддержки для Вложение WAV-файлов в Flex Builder 3/Приложение ActionScript 3. То, что я сделал попробовать и был рад видеть его работает, чтобы создать флэш-ролик в флэш CS 3 (вам нужно будет иметь, что или получить оценку) и импортировать звуки в библиотеку и связать их с экспортироваться с помощью ActionScript. Экспортируйте проект Flash CS3 в SWF-фильм и сохраните его в своем проекте (я добавил его в папку «lib»).

Ваш код ActionScript для создания и играть звук должен быть:

[Embed(source="lib/Sounds.swf", symbol="BigShipSound")] 
private static var BigShipSound: Class; 
... 
var bigShipSound : Sound = BigShipSound as Sound; 
bigShipSound.play(0, 20); 
+0

Ах, черт возьми ... ну, хотя это явно «нет, ты не можешь», это примерно такое же хорошее решение, как и я. Приветствия Baelnorn! – aaaidan

1

Flash-плеер не знает, как напрямую воспроизводить файлы wav. Это правда, что вы можете импортировать их автору, но когда вы публикуете SWF, ваш звук будет преобразован в mp3 или adpcm или что вы выберите в настройках публикации. Даже если вы читаете в wav во время выполнения, единственный способ воспроизвести это путем разбора двоичного потока, поэтому, естественно, такое же ограничение применяется, если вы вставляете файл.

Некоторые связанные данные на this question. Который с любопытством вы, кажется, прокомментировали в прошлом году! :)

+0

Малый мир, да? Ну, вы правы в кодировании wavs независимо от того, что вы делаете, но я думаю, что меня расстраивает то, что вы не можете использовать as3-приложение для вставки RAW-данных (или даже ничего, кроме mp3), и воспроизводить их с помощью Flash'а " (т. е. не использовать событие SAMPLE_DATA). Dig? – aaaidan

7

Там в библиотеке вы можете использовать

http://code.google.com/p/as3wavsound/

+0

Это круто! Я надеялся избежать накладных расходов процессора на передачу данных wav через событие SAMPLE_DATA во время выполнения, что и делает эта библиотека (поскольку «родной» игрок, безусловно, менее жадный). – aaaidan