El Stage es único para todas las clases de Actionscript que desarrollemos en una aplicación pero no siempre es accesible a nivel de clase.
Para una clase que no sea gráfica, que no extienda ni Sprite, ni MovieClip, etc. solo será accesible si se lo pasamos referenciada, en el constructor de la clase por ejemplo:
Pero para una clase que instancie Sprite por ejemplo si es accesible pero solo después de que la clase se haya añadido al propio stage o a algún elemento unido a este. Así para evitar que sea null hay que esperar a este evento y a partir de la versión 9.0.28.0 de Flash Player hay dos nuevos eventos que son ADDED_TO_STAGE y REMOVED_FROM_STAGE. Así podemos definir que el acceso al stage una vez el evento se haya alcanzado. Por ejemplo:
Una mas. A la hora de hacer un repeater para pasar los datos a los componentes del repeater se usa currentItem mientras se está ejecutando (dibujando) pero para mantener la interación una vez realizado hay que usar getRepeaterItem.
Para un proyecto que estoy realizando he necesito utilizar el SVG y he desarrollado una librería para dibujarlo en tiempo de ejecución. Necesita todavía incluir muchas partes pero ya interpreta todos los comandos de dibujo y sus transformaciones. El siguiente paso es integrarle el texto.
Aquí un ejemplo de un SVG interpretado de un archivo de la página Croczilla
A la hora de usar componentes Flex a través del popUpManager no tenemos ningún problema si el componente se encuentra en el raiz del proyecto ya que el nombre de la clase que se usa al hacer el createPopUp es encontrado. Pero si los componentes están en otra carpeta, por ejemplo "componentes" nos darán un error a la hora de compilar.
var pop= mx.managers.PopUpManager.createPopUp(this,myComp,true);
Para solucionar este problema si por ejemplo el componente está en la carpeta "componentes" deberemos de hacer una llamada a la clase para que se incluya en el tiempo de compilación.
En un DataGrid existen muchos eventos que nos pueden ayudar a la hora de seleccionar la información que aparece, el click y el change funcionan para vigilar los cambios sobre todo el DataGrid pero para saber si se ha pulsado sobre un item existe el evento itemClick.
Lo único que hay que vigilar es que también se activa si pulsamos sobre el header del DataGrid así que en la función deberemos de comprobar si se ha pulsado realmente sobre un item comprobando si rowIndex es mayor de 0.
Dentro de mx.utils.ObjectUtil existe el comando copy que realmente hace eso, copiar un objeto en otro, parece algo sencillo pero realmente más sencillo parecía que para copiar un objeto se pudiera hacer mediante objeto2=objeto1, pero en Flex esto asigna el valor de objeto1 a objeto2 pero tambien lo une de forma que las modificaciones sobre objeto2 se hacen también sobre objeto1 (Two Way Data Binding).
De esta forma podemos seleccionar un objeto en un DataGrid y editar el objeto seleccionado pudiendo si lo deseamos deshacer los cambios y volver al objeto original ya que no lo estaremos modificando.
Esta aplicación hace una copia del objeto cuando se edita, si queremos ver el cambio al hacerlo sin el ObjectUtil.copy no tenemos más que sustituir la línea:
Al hacer cambios sobre empleadoActivo esos cambios se verán reflejados en el dataGrid. El cambio no se ve al instante ya que el DataGrid no se actualiza, pero reordena el DataGrid y sorpresa!!!
Esto luego seguro que lo necesito y no lo encuentro.
Se trata de la forma de pasar un número ilimitado de parametros a una función, se pueden definir los parametros fijos que se quieran y luego dejar mediante (... args) que se puedan pasar mas parametros.