flash - spec - Elemento Flex includein
html spec (2)
El pseudo-atributo includeIn
solo existe en el lenguaje MXML. Lo llamo un pseudo-atributo porque no se asigna a una propiedad o un estilo (de la clase Button en su ejemplo).
En cambio, es una notación abreviada de la antigua etiqueta mx AddItems . En esa sintaxis, tu ejemplo se vería así:
<mx:states>
<mx:State name="normal"/>
<mx:State name="mystate">
<mx:AddItems items="{mybtn}"/>
</mx:State>
</mx:states>
<mx:Button id="mybtn"/>
Menciono esto, porque el código de ActionScript que se genera para includeIn
es muy similar. Esto es lo que parece:
states = [
new State ({
name: "normal",
overrides: []
}),
new State ({
name: "mystate",
overrides: [
new AddItems().initializeFromObject({
itemsFactory: _TestFlex_Button1_factory,
destination: null,
position: "first"
})
]
})
];
La diferencia es que usa una fábrica para crear instancias del botón.
Tenga en cuenta que si le interesa el código de ActionScript que se genera a partir del código MXML, puede echarle un vistazo simplemente pasando el indicador keep-generated-actionscript
al compilador (consulte las opciones del compilador mxmlc ).
Por supuesto, si realmente quiere ''manualmente'' escribir esa lógica (yo no), puede ser más fácil anular setCurrentState () o escuchar el evento CURRENT_STATE_CHANGE , y llamar a addElement()
o removeElement()
dependiendo del valor de currentState
.
En Flex, podemos asignar estado a un elemento a través de esto:
<s:Button id="mybtn" includeIn="mystate" label="button label"/>
¿Cómo podemos hacer el includeIn
con ActionScript?
Gracias.
Los estados son un concepto MXML, no un concepto AS. En AS tiene que escribir su propia lógica en la función de anulación establecer currentState.
override public function set currentState(value:String):void
{
super.currentState = value;
//write your logic for states
}