开发者

Embed many graphics using an array

开发者 https://www.devze.com 2023-01-08 02:37 出处:网络
In AS3 you can embed a graphic into a Class variable: [Embed(source=\"MenuAssets.swf\", symbol=\"topSquare\")]

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];
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号