5

在 AS3 中,您可以将图形嵌入到 Class 变量中:

     [Embed(source="MenuAssets.swf", symbol="topSquare")]
        public var TopMenuItem:Class;

我正在做的这个网站项目中有数百个资产,所以我想将资产嵌入到一个数组中以便快速访问。

我可以做这样的事情吗?它没有编译,所以我想知道它是否可能。

        public var MenuAssets:Array = [
           [Embed(source="MenuAssets.swf", symbol="topSquare")],
           [Embed(source="MenuAssets.swf", symbol="botSquare")],
           [Embed(source="MenuAssets.swf", symbol="leftSquare")],
           [Embed(source="MenuAssets.swf", symbol="rightSquare")],
        ]
4

3 回答 3

5

恐怕你不能。您可以执行以下操作:

public class Assets {
    [Embed(source="MenuAssets.swf", symbol="topSquare")]
    public static const TOP_SQUARE:Class;
    //... more assets ...
    public static function getAssets():Array {
        var ret:Array = [];
        for each (var s:String in describeType(Assets).constant.@name) ret.push(Assets[s]);
        return ret;
    }
}
于 2010-07-16T10:22:53.580 回答
4

通常,Flex 中的元数据标记适用于类级别变量。

您必须在变量定义之前使用[Embed] 元数据标记,其中变量的类型为 Class。

但是,您可以这样做:

[Embed(source="MenuAssets.swf", symbol="topSquare")]
public var TopMenuItem:Class;

[Embed(source="MenuAssets.swf", symbol="leftSquare")]
public var LeftMenuItem:Class;

[Embed(source="MenuAssets.swf", symbol="rightSquare")]
public var RightMenuItem:Class;

[Embed(source="MenuAssets.swf", symbol="botSquare")]
public var BottomMenuItem:Class;

public var menuAssets:Array = [TopMenuItem, LeftMenuItem, 
                               RightMenuItem, BottomMenuItem];
于 2010-07-16T10:10:46.810 回答
4

您还可以将资产嵌入到单个 FLA 中。在 FLA 的库中,给每个人一个类名,如“graphics.menu.RightSquare”,然后将其导出为 SWC。配置您的 Flash Builder 项目以将 SWC 作为外部库加载。然后您可以执行以下操作:

import graphics.menu.*;

new RightSquare();
于 2010-07-17T00:02:44.060 回答