Поскольку вы уже используете MXMLC и Ant, вам следует подумать о добавлении еще одного фрагмента кода в скрипт сборки Ant, чтобы встроить свои MP3 в библиотеку SWC. Затем вы можете встроить этот SWC в исполняемый SWF (этот простой шаг я оставил в своем примере ниже).
Поскольку все, что вам нужно, это Ant, сделать это не сложнее, чем то, как вы уже строите свой SWF. Единственная реальная «ошибка» заключается в том, что вам нужно встроить свои файлы, используя MXMLC / SWC-дружественный абсолютный путь (например, «/myAssets/myasset.mp3») в своем коде.
Поскольку у него есть доступ к метаданным проекта, Flash Builder «знает», где находится корень вашего проекта, что позволяет ему использовать относительные пути встраивания. MXMLC не имеет этой информации. Поэтому вам необходимо убедиться, что встраивания объявлены в соответствии с абсолютным местоположением файлов, которые хранятся в SWC. Если вы сделаете это, Flash Builder и MXMLC / Ant смогут понять ваши встраивания. Таким образом, все счастливы.
Чтобы помочь вам в этом, ниже приведен пример сценария Ant для создания ресурса SWC. Вот ключевые шаги, в двух словах:
- Создайте строку, содержащую расположение файлов для включения, один за другим
- Скомпилируйте эти активы в SWC, используя MXMLC и набор аргументов командной строки размером с монстра
Следующий скрипт упакует файлы jpgs, pngs, svgs, ttfs, xml, файлы свойств и MP3 в файл под названием "assets.swc". Вам нужно будет включить flexTasks.jar (по понятным причинам) и ant-contrib.jar в соответствующих относительных местах и установить переменную среды FLEX_HOME.
<?xml version="1.0" encoding="utf-8"?>
<project name="My App Builder"
basedir="."
default="buildSWC"
xmlns:antcontrib="antlib:net.sf.antcontrib">
<taskdef resource="flexTasks.tasks" classpath="${basedir}/libs/flexTasks.jar"/>
<taskdef resource="net/sf/antcontrib/antlib.xml" classpath="${basedir}/libs/ant-contrib-1.0b3.jar"/>
<property environment="env"/>
<property name="FLEX_HOME" value="${env.FLEX_HOME}"/>
<property name="ASSETS_FILE" value="assets.swc"/>
<property name="SRC_DIR" value="./src"/>
<!-- Prepare folders for SWC compilation -->
<target name="buildSWC">
<echo message=""/>
<echo message="*****************************************************"/>
<echo message="* ${ASSETS_FILE}"/>
<echo message="*****************************************************"/>
<echo message="...basedir: ${basedir}"/>
<!-- Build a swc from statically-included assets (images, mp3s, xml files, properties files) -->
<fileset id="assets.flex" dir="src" includes="**/*.jpg,**/*.png,**/*.mp3,**/*.css,**/*.svg,**/*.swf,**/*.TTF,**/*.jpeg,**/*.xml,**/*.properties"/>
<pathconvert pathsep=" " property="assets.flex.output" refid="assets.flex" dirsep="/">
<map from="${basedir}/src/" to=""/>
</pathconvert>
<echo message="...Resources being considered..."/>
<var name="filelist" value=""/>
<var name="prefixfilelist" value="-include-file"/>
<for list="${assets.flex.output}" delimiter=" " param="asset">
<sequential>
<echo>Asset: @{asset}</echo>
<propertyregex property="prop"
input="${asset}"
regexp="(.*)${SRC_DIR}/(.*)"
select="\2"
casesensitive="false"
defaultvalue="./src/"/>
<echo>Prop: ${prop}</echo>
<var name="filelist_tmp" value="${filelist}"/>
<var name="filelist" unset="true"/>
<var name="filelist"
value="${filelist_tmp} ${prefixfilelist} ./@{asset} ${prop}@{asset}"/>
<var name="prop" unset="true"/>
</sequential>
</for>
<echo message="-output ${ASSETS_FILE} ${filelist}"/>
<!-- Windows Compile -->
<exec executable="${FLEX_HOME}/bin/compc.exe"
failonerror="true"
osfamily="winnt">
<arg line="-output ./libs/assets.swc ${filelist}"/>
</exec>
<!-- Unix/Linux Compile -->
<exec executable="${FLEX_HOME}/bin/compc"
failonerror="true"
osfamily="unix">
<arg line="-output ./libs/assets.swc ${filelist}"/>
</exec>
</target>
</project>
Мы используем этот подход (который я собрал воедино из кусочков, которые я нашел в Интернете - я бы с удовольствием отдал должное, если бы я вспомнил, где), чтобы создать большой модульный проект с его встроенными изображениями и шрифтами. Нет оснований думать, что это не будет работать для аудиофайлов.
Удачи,
* * Тэйлор тысячу двадцать-три
P.S. Там могут быть некоторые оставшиеся / бесполезные строки кода. Кроме того, я не эксперт по муравьям, так что для любого "парня муравья": будь спокоен со мной, если я нарушу какие-либо лучшие практики;)