Встройте много графики с помощью массива

В AS3 можно встроить диаграмму в Переменную класса:

     [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")],
        ]
5
задан Amarghosh 16 July 2010 в 11:16
поделиться

3 ответа

Вы также можете встроить активы в один FLA. В библиотеке FLA дайте каждому из них имя класса, например "graphics.menu.RightSquare", а затем экспортируйте его как SWC. Настройте проект Flash Builder на загрузку SWC как внешней библиотеки. Затем вы можете сделать что-то вроде:

import graphics.menu.*;

new RightSquare();
4
ответ дан 18 December 2019 в 14:41
поделиться

Боюсь, что не получится. Что вы можете сделать, так это следующее:

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;
    }
}
5
ответ дан 18 December 2019 в 14:41
поделиться

В общем, теги метаданных во 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];
4
ответ дан 18 December 2019 в 14:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: