In AS3 you can embed a graphic into a Class variable:
[Embed(source="MenuAssets.swf", symbol="topSquare")]
public var TopMenuItem:Class;
I have hundreds of assets in this one website project I'm doing, so I want to embed assets into an array for quick access.
Can I do something like this? Its not compiling so I'm wondering whether its possible.
public var MenuAssets:Array = [
[Embed(source="MenuAssets.swf", symbol="topSquare")],
[Embed(so开发者_JAVA百科urce="MenuAssets.swf", symbol="botSquare")],
[Embed(source="MenuAssets.swf", symbol="leftSquare")],
[Embed(source="MenuAssets.swf", symbol="rightSquare")],
]
I'm afraid you can't. What you could do is the following:
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;
}
}
You could also embed the assets in a single FLA. In the FLA's library, give each one a class name like "graphics.menu.RightSquare" then export it as a SWC. Configure your Flash Builder project to load the SWC as an external library. Then you can do something like:
import graphics.menu.*;
new RightSquare();
In general, the metadata tags in Flex apply to a class level variable.
You must use the
[Embed]
metadata tag before a variable definition, where the variable is of type Class.
You can however do:
[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];
精彩评论