使用数组嵌入许多图形

时间:2010-07-16 10:05:07

标签: actionscript-3 flash embedding assets

在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")],
        ]

3 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:4)

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

  

您必须在变量定义之前使用[Embed] metadata tag,其中变量的类型为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];

答案 2 :(得分:4)

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

import graphics.menu.*;

new RightSquare();