在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")],
]
答案 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();