首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Flex的mxmlc编译器在SWF中包装或嵌入和MP3

使用Flex的mxmlc编译器在SWF中包装或嵌入和MP3
EN

Stack Overflow用户
提问于 2010-05-13 11:15:37
回答 1查看 1.6K关注 0票数 3

我们基于Flash的网络应用程序可以播放大量用于叙述和音效的音频.我们的一些客户有防火墙规则,阻止下载MP3和其他音频文件。因此,我们需要将这些MP3文件包装在SWF中。在过去,我编写了JSFL脚本,使Flash自动化,并通过一组复杂而脆弱的步骤将MP3文件嵌入到FLAs中,然后将这些文件发布到SWF中。现在,Flex提供了mxmlc编译器。我已经把蚂蚁融入了我们的工作流程,命令行和自动构建都是joy的.因此,我想将MP3s的转码或包装作为构建过程的一部分。我已经找到了纯AS3编译时嵌入资产,但是这需要我编写一个脚本来生成一个包装类作为文件。是否有更干净的方法将MP3文件包装或转换为SWF?我想我希望有一种方法可以直接将mp3传递给mxmlc并输出一个swf,但是任何比生成actionscript包装类更好的建议都会受到极大的赞赏。

EN

回答 1

Stack Overflow用户

发布于 2011-04-05 22:39:31

由于您已经在使用MXMLC和Ant,所以应该考虑向Ant构建脚本中添加一些代码,以便将MP3s构建到库SWC中。然后,您可以将该SWC构建到可执行的SWF中(我在下面的示例中留下了这个简单步骤)。

因为您所需要的只是Ant,这样做并不比如何构建SWF更困难。唯一真正的“理解”是,您需要使用MXMLC/SWC友好的绝对路径(例如“/myAsset/myasset.mp3”)嵌入您的文件。

由于它可以访问项目元数据,Flash“知道”项目的根在哪里,从而允许它使用相对的嵌入路径。MXMLC没有任何这些信息。因此,您需要确保声明嵌入的位置以匹配文件在SWC中存储的绝对位置。如果这样做,Flash和MXMLC/Ant都能够理解嵌入的内容。这样每个人都很开心。

为了帮助您,下面是构建资产SWC的Ant脚本示例。简单地说,以下是几个关键步骤:

  • 一个一个地构建一个字符串,其中包含要包含的文件的位置。
  • 使用MXMLC和一组命令行参数将这些资产编译为SWC。

下面的脚本将jpgs、pngs、svgs、ttfs、xml文件、属性文件和MP3s打包到一个名为"assets.swc“的文件中。您需要在适当的相对位置中包含flexTasks.jar (出于明显的原因)和antcontrib.jar,并设置一个FLEX_HOME环境变量。

代码语言:javascript
复制
<?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>

我们使用这种方法(我从我在互联网上找到的零碎数据中拼凑而成) --如果我记得在哪里,我很乐意给予赞扬--来构建一个基于模块的大型项目及其嵌入的图像和字体。没有理由认为它不适用于音频文件。

祝好运,

泰勒

可能有一些剩余的/无用的代码行在那里。而且,我不是蚂蚁专家,所以对于任何“蚂蚁家伙”来说:如果我违反了任何最佳实践,就放心吧;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2826287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档