actionscript-3 flash embedding assets

actionscript 3 - Incrustar muchos gráficos usando una matriz



actionscript-3 flash (3)

En general, las etiquetas de metadatos en Flex se aplican a una variable de nivel de clase.

Debe usar la etiqueta de metadatos [Embed] antes de una definición de variable, donde la variable es de tipo Clase.

Sin embargo puedes hacer:

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

En AS3 puedes insertar un gráfico en una variable de Clase:

[Embed(source="MenuAssets.swf", symbol="topSquare")] public var TopMenuItem:Class;

Tengo cientos de activos en este proyecto de sitio web que estoy haciendo, por lo que quiero incorporar activos en una matriz para un acceso rápido.

¿Puedo hacer algo como esto? No está compilando así que me pregunto si es posible.

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")], ]


Me temo que no puedes. Lo que podrías hacer es lo siguiente:

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; } }


También puede insertar los activos en un único FLA. En la biblioteca de la FLA, dele a cada uno un nombre de clase como "graphics.menu.RightSquare" y expórtelo como SWC. Configure su proyecto de Flash Builder para cargar el SWC como una biblioteca externa. Entonces puedes hacer algo como:

import graphics.menu.*; new RightSquare();