flex actionscript-3 mxml

flex - ¿Puedo tener múltiples clases en un archivo en MXML?



actionscript-3 (3)

No, no puede definir dos clases en un archivo MXML, pero puede tener el mismo paquete (espacio de nombres) para ambas clases y hacer que classB sea internal , por lo que solo es visible para las clases dentro de ese paquete.

Tengo una clase B que solo se usará dentro de la clase A. Sin embargo, classA se escribe como código mxml, no actionscript. ¿Es posible anidar clases en MXML o agregar otra clase después de la etiqueta raíz en el mismo archivo .mxml? Aclaración: quiero que ambas clases estén escritas en MXML dentro del mismo archivo, pero no pude encontrar nada en la documentación de Adobe que especificara cómo hacerlo.


Creo que está buscando la etiqueta fx: Component que le permite definir un nuevo documento MXML dentro de un documento MXML existente:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:local="*"> <fx:Declarations> <fx:Component className="MyMXMLClass1"> <s:Group> <s:Button label="MyMXMLClass1" /> </s:Group> </fx:Component> <fx:Component className="MyMXMLClass2"> <s:Group> <s:Button label="MyMXMLClass2" /> </s:Group> </fx:Component> </fx:Declarations> <s:VGroup> <local:MyMXMLClass1 /> <local:MyMXMLClass2 /> </s:VGroup> </s:Application>


Si se requieren múltiples niveles de herencia en las clases anidadas, y una alternativa a <fx: Component> (mencionada en una respuesta anterior) es usar <fx: Library> por ejemplo:

<fx:Library> <fx:Definition name="MyClass" > <s:Group> ... <s:/Group> </fx:Definition> </fx:Library> ... <!-- Use MyClass later in the file. --> <fx:MyClass ... />

<Fx: Library> debe estar en la parte superior del archivo MXML. Esta sintaxis permite varias definiciones de clase anidadas en una fila, y cada una puede extender la herencia anterior.