В 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")],
]
Вы также можете встроить активы в один FLA. В библиотеке FLA дайте каждому из них имя класса, например "graphics.menu.RightSquare", а затем экспортируйте его как SWC. Настройте проект Flash Builder на загрузку SWC как внешней библиотеки. Затем вы можете сделать что-то вроде:
import graphics.menu.*;
new RightSquare();
Боюсь, что не получится. Что вы можете сделать, так это следующее:
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;
}
}
В общем, теги метаданных во 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];