[Bindable]
/**
* Display output of video device.
*/
public var videoLocal : Video;
¿Alguien sabe?¿Qué significa [Bindable] en actionscript?
[Bindable]
/**
* Display output of video device.
*/
public var videoLocal : Video;
¿Alguien sabe?¿Qué significa [Bindable] en actionscript?
Se utiliza en la vinculación de datos con Flex, se puede leer más sobre esto aquí
http://livedocs.adobe.com/flex/3/html/help.html?content=databinding_2.html
Creación de propiedades para su uso como la fuente para el enlace de
de datos Cuando se crea una propiedad que desea utilizar como fuente de datos expresión de enlace, Flex puede copiar automáticamente el valor de la fuente a cualquier destino propiedad cuando cambia la propiedad de origen . Para indicarle a Flex que realice la copia, debe usar la etiqueta de datos [Bindable] para registrar la propiedad con Flex.
[Bindable] es una una de las varias etiquetas meta que se pueden utilizar en el código ActionScript flexión. Se puede aplicar a propiedades o métodos que están marcados en cualquier ámbito. No se puede usar con miembros de clase estáticos.
La clave para usar la metaetiqueta [Bindable] es comprender lo que sucede debajo del capó cuando lo usa. Básicamente, el uso de enlace de datos es un tipo de taquigrafía para agregar oyentes de eventos y despachar eventos.
Existen dos formas básicas de la etiqueta [Bindable]. El primero es solo [Bindable] seguido de una declaración var/property. El segundo es [Bindable (event = "nombre del evento")] seguido de una declaración var/property, una declaración de función/método o la mitad de una declaración getter/setter.
Explicaré la notación más larga primero ya que la otra se basa en el mismo concepto pero con aún más taquigrafía.
Cuando se utiliza [enlazables (evento = "nombre_evento")] le está diciendo esencialmente el compilador que esta var/propiedad/función/método (llaman a esto el miembro de instancia) está 'disponible' para ser utilizado como la fuente para el enlace de datos. También le está diciendo que cuando el valor del miembro de la instancia ha sido invalidado/cambiado y necesita ser releído, se enviará el evento "eventname".
En esta forma más larga esto es todo lo que estás haciendo. Usted, el desarrollador, es responsable de enviar realmente el evento "nombre de evento" siempre que el valor deba actualizarse en los suscriptores vinculantes.
La eficacia real del uso del enlace de datos viene del lado de la suscripción. La notación típica se verá en MXML es value = "{} instance.propertyName" Cuando se utiliza la notación {} le está diciendo al compilador que hacer lo siguiente:
Si se utiliza la forma más corta [Bindable], y se agrega la etiqueta antes de una propiedad/var, el compilador llena los espacios en blanco y añade algunas funciones adicionales para hacer que el enlazable la propiedad . Básicamente le está diciendo al compilador "agregue los eventos y métodos que necesita para hacer que esta propiedad sea enlazable"
Ahora la manera de pensar qué hará el compilador bajo esta premisa es esta.
En esencia, el compilador hará la mayor parte del trabajo por usted.
[Bindable]
public var xyz
es equivalente a
private var _xyz:String;
[Bindable(event="updateXYZValue")]
public function get xyz():String{
return _xyz;
}
public function set xyz(newxyz:String):void{
_xyz = newxyz;
dispatchEvent(new Event("updateXYZValue"));
}
Las únicas diferencias funcionales en estos es que en el primer ejemplo;
Este segundo ejemplo también muestra un caso especial de la metaetiqueta [Bindable]. Esto es que cuando lo aplica a un par get/setter definido para el mismo nombre de variable, solo necesita aplicarlo a uno u otro, se aplicará a ambos. Por lo general, debe configurarlo en el getter.
Puede usar cualquier notación en una función/método; sin embargo, si no especifica un evento, nunca se activará el enlace, por lo que si está tratando de vincularse a una función, siempre debe especificar un evento. También es posible especificar más de un evento desencadenante al apilar la etiqueta. p.ej.
[Bindable(event="metaDataChanged")]
[Bindable(event="metaObjectUpdated")]
public function readMyMetaData():MetaDataObject{
var myMetaDataObject:MetaDataObject;
.
.
.
return myMetaDataObject;
}
Esto supondría que en otro lugar que la clase va a despachar este metaDataChanged evento o la metaObjectUpdated caso cuando se desea activar la unión.
También tenga en cuenta que con esta notación puede vincular la vinculación de cualquier miembro de la instancia a cualquier evento que despache la instancia. Incluso eventos heredados que usted mismo no genera como FrameEnter, OnChange, etc ...
Los enlaces de datos también se pueden configurar y destruir durante el tiempo de ejecución. Si está interesado en esto, eche un vistazo a las clases mx.binding.utils.
Verifique la respuesta de Mihai [debajo] (http://stackoverflow.com/a/19729201/2530736) para enlace bidireccional – Vanlalhriata
Como una adición a lo que dijo Justin, en realidad puede usar el enlace de datos de dos maneras en Flex con el @ caracteres. He aquí un ejemplo:
<s:TextInput id="txt1" text="@{txt2.text}" />
Para un ejemplo de trabajo con el código fuente activado, puede comprobar fuera de este artículo que escribí hace un tiempo:
Cómo hacer el trabajo similar sin la flexión? – ollydbg
@ollydbg Mencioné la respuesta a su comentario/pregunta brevemente en la parte inferior de mi respuesta a esta pregunta. En resumen, sin usar mxml puede usar el paquete ** mx.binding.utils ** para crear y modificar enlaces directamente en actionscript. –