从swf文件中提取资产?

时间:2009-05-22 09:13:59

标签: flex actionscript-3 flash symbols

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

谢谢!

3 个答案:

答案 0 :(得分:1)

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

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

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

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

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

这里有a demo关于如何使用FDT的方法。不确定您使用的是哪种工具。如果是商业Flex Builder,则该过程应该类似。

我认为这就是你要找的东西。

答案 1 :(得分: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}"

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

答案 2 :(得分:0)

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

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

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

var asset:MovieClip = new c();