2011-04-20 14 views
11

Cómo crear y trabajar con metadatos personalizados en ActionScript3/Flex?metadatos personalizados en AS3/Flex?

+0

Muy buenas preguntas y respuestas. ¿Podría alguien por favor enumerar algunos ejemplos de cómo sería útil? ¡Gracias! – bigp

+0

@bigp Algunos marcos arquitectónicos usan metadatos personalizados (Parsley, Swiz, por ejemplo) –

+0

¿Funcionarán también estos metadatos personalizados en los IDE de Flash CS * al compilar? – bigp

Respuesta

19

Hay dos direcciones generales para hacer frente a los metadatos en ActionScript en Flex:

  1. Trata en tiempo de ejecución utilizando la reflexión (o la introspección en términos de Adobe). Puede encontrar la documentación here. Hay varias bibliotecas de terceros que proporcionan API de reflexión más conveniente, como as3-commons-reflect o reflection API in Parsley.
  2. Uso de extensiones de compilador Flex que se introdujo desde Flex 4 SDK revisión 8165 (consulte details). Consulte también the corresponding discussion y official documentation.
14

Para crear metadatos, sólo tiene que utilizar la sintaxis de corchetes en su definición de clase:

[ClassAttr] 
public class ClassWithMetadata { 
    [AttributeNoArgs] 
    public var data:Object; 

    [AttributeWithArgs(arg="value)] 
    public var prop:Object; 
} 

llamada describeType(ClassWithMetadata) para obtener la descripción XML de su clase. Los metadatos estarán allí, puedes analizarlos y procesarlos como quieras.
Para evitar que el compilador elimine sus metadatos, agregue el argumento de compilación -keep-as3-metadata Attribute para cada nombre de atributo que use. Esto se puede hacer en la configuración de la biblioteca o en cada proyecto que usa metadatos.

+0

¡Gracias, por ejemplo! Si pudiera aceptar más de 1 respuesta ... :) –

+0

No hay problema, me alegro de que haya sido útil. – alxx

+0

¿Esto es exclusivo del compilador de Flex (mxmlc) o los metadatos también se conservarán en el compilador de Flash Professional? – Triynko

Cuestiones relacionadas