Flex y dado que estoy mas que conforme con la posibilidades y
caracteristicas que ofrece empecé a desarrollar nuevos proyectos.
En estos dias se me cruzó un problema muy raro manejando modulos con
el ModuleLoader, que manejo pasando parametros por el url de carga
del ModuleLoader, y que son recibidos en la propiedad loaderInfo.url
del modulo.
Lo he resumido en un pequeñisimo ejemplo de codigo.
Lo raro es que: con solo descomentar la linea de la funcion
'cualquiera' en la applicacion principal, se altera el resultado que
recibe loaderInfo.url dentro del modulo.
Como podra ver el que quiera probarlo, corriendo el ejemplo tal cual
lo envio, haciendo click en el boton se muestra un valor.
Pero con solo descomentar la linea de la funcion 'cualquiera' (una
funcion que no se procesa en ningun momento, solo que en la linea hace
referencia a una propiedad del modulo), el valor mostrado se altera.
Como no tengo a quien consultar entre conocidos sobre estos temas de
Flex solo me queda recurrir a los distintos grupos que se dedican al
tema.
Tengo alguna idea de que puede estar pasando, me hago una idea de
por que Flex esta actuando de esta manera, pero no encuentro una forma
de solucionarlo, lo que me llevaria a cambiar la forma de trabajo que
venia desarrollando.
Un saludo y un agradecimiento si pueden darme una pista de cual es el
problema.
Lo siguiente es el codigo de los 2 archivos del ejemplo
(Atencion: eliminé los atributos xmlns:mx de la definicion de los 2 archivos porque este foro no me deja incluir las direcciones web estandar de ese atributo que agrega automaticamente el Flex Builder)
prueba.mxml:
Código:
modulo.mxml:<?xml version="1.0" encoding="utf-8"?> <mx:Application layout="absolute"> <mx:Script> <![CDATA[ public function cualquiera() : void { //var x: String =(mlModulo.child as modulo).texto; } ]]> </mx:Script> <mx:ModuleLoader id="mlModulo" url="modulo.swf?parametro=prueba" x="121" y="71" width="561" height="344"/> </mx:Application>
Código:
<?xml version="1.0" encoding="utf-8"?> <mx:Module layout="absolute" width="400" height="300"> <mx:Script> <![CDATA[ import mx.controls.Alert; public var texto : String = 'Texto de prueba'; ]]> </mx:Script> <mx:Button x="149" y="119" label="Button" click="Alert.show (this.loaderInfo.url);"/> </mx:Module>