在为小游戏构建 Flex 框架时,我计划将一堆图形资源(电影剪辑符号)捆绑到一个 swf 文件中,然后我将其加载到我的 Flex 应用程序中,然后从 swf 文件中提取符号以用于我的应用。我的问题是:我如何通过 actionscript 做到这一点?
谢谢!
在为小游戏构建 Flex 框架时,我计划将一堆图形资源(电影剪辑符号)捆绑到一个 swf 文件中,然后我将其加载到我的 Flex 应用程序中,然后从 swf 文件中提取符号以用于我的应用。我的问题是:我如何通过 actionscript 做到这一点?
谢谢!
如果您不想使用 EMBED 并且不想在运行时加载资产,我建议您将 swf 导出为 SWC。
这样,您可以从 actionscript 浏览 SWC 文件。您可以在编译时检查是否存在另一个影片剪辑中的子影片剪辑。
如果您使用的是 flex 编译器,请记住在编译时添加:
-library-path C:\path\to\your\file.swc
如果您使用 FDT,您可以选择自动添加 SWC 作为参数。
这是一个关于如何使用 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();