1

在为小游戏构建 Flex 框架时,我计划将一堆图形资源(电影剪辑符号)捆绑到一个 swf 文件中,然后我将其加载到我的 Flex 应用程序中,然后从 swf 文件中提取符号以用于我的应用。我的问题是:我如何通过 actionscript 做到这一点?

谢谢!

4

3 回答 3

1

如果您不想使用 EMBED 并且不想在运行时加载资产,我建议您将 swf 导出为 SWC。

这样,您可以从 actionscript 浏览 SWC 文件。您可以在编译时检查是否存在另一个影片剪辑中的子影片剪辑。

如果您使用的是 flex 编译器,请记住在编译时添加:

-library-path C:\path\to\your\file.swc

如果您使用 FDT,您可以选择自动添加 SWC 作为参数。

这是一个关于如何使用 FDT的演示。不确定您使用的是哪个工具。如果是商业 Flex Builder,过程应该类似。

我想这就是你要找的。

于 2009-05-22T11:14:49.177 回答
0

我会尝试创建一个资产/图标库 AS 文件。

类似的东西

package 
{

public class IconLibrary
{

    /*
    *  Framework Icons
    */

    [Embed (source="../assets/fof_graphics.swf", symbol="clapperboard_icon")]
    public static const clapperBoardIcon:Class;
    [Embed (source="../assets/fof_graphics.swf", symbol="clapperboard_over_icon")]
    public static const clapperBoardOverIcon:Class;
    [Embed (source="../assets/fof_graphics.swf", symbol="close_button")]
    public static const closeButton:Class;
    [Embed (source="../assets/fof_graphics.swf", symbol="close_over")]
    public static const closeOverButton:Class;

    public function IconLibrary()
    {
    }

  }

}

那么你需要做的就是

source="{IconLibrary.clapperBoardIcon}"

或您希望显示的任何资产名称。

于 2009-05-22T11:05:37.213 回答
0

这里有很多很好的解决方案,如果您在运行时加载 swf 并想要提取资产,则可以在加载器完整事件侦听器中执行以下操作:

var c:Class = Class(LoaderInfo(e.target).applicationDomain.getDefinition("myClassDefinitionName"));

这会将 swf 中的资产存储为 Class 对象,因此您可以像这样创建它的实例:

var asset:MovieClip = new c();
于 2009-05-22T15:58:35.937 回答