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