【问题标题】:What kind of class is embedded media in Flash Builder?Flash Builder 中的嵌入式媒体是什么类?
【发布时间】:2011-05-31 03:02:28
【问题描述】:

当你像下面这样在 FLash Builder 中嵌入媒体时,它会创建一个类来引用

[Embed(source="images/list.png")]
protected static const LIST_ICON:Class;

这会创建什么样的类?如果我有一个包含 bitmapData 的库 swc,我将如何在代码中使用我的 swc 中的 bitmapData 创建相同类型的类?

我有一个带有 bitmapData 的 SWC

我的文件中有一个 xml 文件,它定义了我正在使用的位图

所以我然后通过这样做来上课

var ClassReference:Class = getDefinitionByName("ImageData") as Class;

“ImageData”是 xml 发送的任何文本的示例......因此它动态决定要获取的 swc 类。

之后我需要使用它来创建一个类,我猜它扩展了包含获取的 bitmapData 的 BitmapAsset... 从而模拟了上面前两行的嵌入。

最终结果是我有一个系统调用

getQualifiedClassName(SomeClass)

这个被传递给的类然后使用

getDefinitionByName("passedName") 

获取 Class 以及包含的 bitmapData。

这有点棘手,但我必须这样做才能让它保持动态...无法修改处理传递给它的数据的代码。它必须按名称传递

我希望它会更简单,但我开始认为以正常方式嵌入所有这些并根据 XML 的内容进行使用不同嵌入的简单切换会更容易

【问题讨论】:

    标签: flash apache-flex actionscript


    【解决方案1】:

    如果您查看有关 Embed 元数据的文档 (http://livedocs.adobe.com/flex/3/html/help.html?content=embed_4.html),则会显示图像将以 mx.core.BitmapAsset 类型嵌入(即,您的 LIST_ICON 类扩展了 BitmapAsset)。

    针对您的嵌入进行了调整,代码为:

    [Embed(source="images/list.png")]
    protected static const LIST_ICON:Class;
    
    ...
    
    var imgObj:BitmapAsset = new LIST_ICON() as BitmapAsset;
    

    查看上面的链接以获取完整的代码示例。

    【讨论】:

    • 我添加了更多我想要做的事情的细节
    【解决方案2】:

    您可以使用var listIcon:LIST_ICON = new LIST_ICON(); 创建图像的实例。

    您可以将其分配给图像的来源

    image.source = listIcon;

    【讨论】:

      【解决方案3】:

      当您嵌入资源时,它将成为 swf 中的新类。你想要这个类的名字。这是未记录的(afaik),但您可以从已解析的 swf 中获取它。例如,如果我使用我的简单程序 TerrainGenerator.as,编译它并使用 SWiX 解析,我会看到以下 SymbolClass:

      <SymbolClass>
          <Symbol Tag="0" Name="TerrainGenerator" />
      </SymbolClass>
      

      这是主要课程,没有什么不寻常的。接下来,如果我像这样添加嵌入

      public class TerrainGenerator {
          [Embed(source="SOME_PNG.PNG")]
          public static const IMAGE_RESOURCE:Class;
      ...
      

      我会得到以下信息:

      <SymbolClass>
          <Symbol Tag="1" Name="TerrainGenerator_IMAGE_RESOURCE" />
          <Symbol Tag="0" Name="TerrainGenerator" />
      </SymbolClass>
      

      如果我将此 Embed 移动到包 somepackage 中的类 resource 中,它将变为:

       <Symbol Tag="1" Name="somepackage.resource_IMAGE_RESOURCE" />
      

      所以生成这些类名是有规则的,我们可以用 swf 解析器来学习它们。

      【讨论】:

        猜你喜欢
        • 2011-12-30
        • 1970-01-01
        • 2015-06-17
        • 1970-01-01
        • 1970-01-01
        • 2014-05-16
        • 2015-07-26
        • 2017-06-14
        • 1970-01-01
        相关资源
        最近更新 更多