当我构建一个用于minigames的Flex框架时,我计划将一堆图形资源(动画片段符号)捆绑到一个swf文件中,我将其加载到我的Flex应用程序中,然后从swf文件中提取符号以供使用在我的应用程序。我的问题是:我如何通过actionscript来做到这一点?从swf文件中提取资产?
谢谢!
当我构建一个用于minigames的Flex框架时,我计划将一堆图形资源(动画片段符号)捆绑到一个swf文件中,我将其加载到我的Flex应用程序中,然后从swf文件中提取符号以供使用在我的应用程序。我的问题是:我如何通过actionscript来做到这一点?从swf文件中提取资产?
谢谢!
如果您不想使用EMBED并且您不想在运行时加载资源,我建议您将SWF导出为SWC。
这样,您可以从actionscript中浏览SWC文件。您可以在编译时检查另一个动画片段内的子动画片段是否存在。
-library-path C:\path\to\your\file.swc
如果您使用FDT你有一个选项来自动添加SWC作为参数:
如果您正在使用Flex编译器,然后当你编译记得添加此。
这里是a demo关于如何使用FDT做到这一点。不确定你使用哪个工具。如果它是商业Flex Builder,则过程应该类似。
我想这就是你要找的。
我会尝试创建一个资产/图标库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}"
,或者您希望显示的资产的任何名称。
地块的位置不错的解决方案,这里有一个,如果你在运行时加载的SWF文件,并要提取的资产,你可以做你的装载机以下完整的事件侦听器:
var c:Class = Class(LoaderInfo(e.target).applicationDomain.getDefinition("myClassDefinitionName"));
这将存储资产从swf作为Class对象,因此您可以创建它的实例,如下所示:
var asset:MovieClip = new c();
+1对于推荐SWC方法 - 我其实并没有想到那个。在某些情况下,无需运送额外的SWF可能是一个优势,但对于基于Web的应用程序,它也可能导致更大的SWF。尽管如此,根据具体情况,可以提醒它是一种选择。 – 2009-05-22 20:36:26