Pues me he estado metiendo un poco a la POO con Flex 3 y acostumbrado a ciertas cosas de AS2, pues la migración a AS3 se me hace un poco confusa pero ahi voy.
Mi pregunta es la siguiente, tengo un proyecto de Flex 3 donde en mi aplicación principal tengo un componente llamado LOGIN.MXML (ya se imaginaran que intento hacer), por otro lado tengo una clase llamada Usuario en la cual tengo como propiedades los datos del usuario que se ha de logear así como los métodos para la conexión del servidor. Esta clase es importada en mi componente LOGIN.MXML.
Lo que quiero saber es como hacer mi evento o mandar llamar una función dentro del componente, he intentado usando parent, parentDocument, this.parentDocument, e incluso el nombre de la función pero no logro que mi objeto se comunique con el componente.
Mi idea (burda) es la siguiente
En mi clase tengo algo así...
Código :
package scripts { import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.URLRequestMethod; import mx.managers.CursorManager; public class Usuario { // --------------------------- PROPIEDADES public var IdUsuario:Number; public var Nombre:String; // --------------------------- METODOS private function Login(usr:String,pass:String,url:String):void { CursorManager.setBusyCursor(); var urRutaLogin:URLRequest = new URLRequest(url); var ulCargador:URLLoader = new URLLoader(); var uvVariables:URLVariables = new URLVariables(); uvVariables.Usuario = usr; uvVariables.Clave = pass; urRutaLogin.data = uvVariables; urRutaLogin.method = URLRequestMethod.POST; ulCargador.addEventListener(Event.COMPLETE,alCargarLogin); ulCargador.addEventListener(IOErrorEvent.IO_ERROR,alErrorLogin); ulCargador.load(urRutaLogin); } private function alCargarLogin(evento:Event):void { // ------ AQUI QUIERO LLAMAR UNA FUNCION LLAMADA \\\"MENSAJE\\\" DEL COMPONENTE Mensaje(\\\"Se conecto al servidor\\\"); CursorManager.removeBusyCursor(); } private function alErrorLogin(evento:IOErrorEvent):void{ // ------ AQUI QUIERO LLAMAR UNA FUNCION LLAMADA \\\"MENSAJE\\\" DEL COMPONENTE Mensaje(\\\"Error de conexion\\\") CursorManager.removeBusyCursor(); } // --------------------------- CONSTRUCTOR public function Usuario(usr:String,pass:String,url:String){ Login(usr,pass,url); } } }
y en mi componente LOGIN.MXML tengo los iguiente...
Código :
<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?> <mx:Canvas xmlns:mx=\\\"http://www.adobe.com/2006/mxml\\\" width=\\\"100%\\\" height=\\\"100%\\\"> <mx:Script> <![CDATA[ import scripts.Usuario; public function Mensaje(mensaje:String):void{ txtStatus.text = mensaje; } private function Login():void{ var Usr:Usuario = new Usuario(txtUsuario.text,txtClave.text,\\\"http://www.servidor.com/login.php\\\"); } ]]> </mx:Script> <mx:Panel width=\\\"280\\\" height=\\\"240\\\" layout=\\\"absolute\\\"\"> <mx:VBox width=\\\"95%\\\" height=\\\"95%\\\" horizontalCenter=\\\"0\\\" verticalCenter=\\\"0\\\" verticalAlign=\\\"middle\\\"> <mx:Label text=\\\"Usuario\\\"/> <mx:TextInput width=\\\"100%\\\" id=\\\"txtUsuario\\\"/> <mx:Label text=\\\"Contraseña\\\"/> <mx:TextInput width=\\\"100%\\\" id=\\\"txtClave\\\"/> <mx:CheckBox label=\\\"Recordar mis datos\\\" id=\\\"chkRecordar\\\"/> <mx:HRule width=\\\"100%\\\"/> <mx:HBox width=\\\"100%\\\" horizontalAlign=\\\"right\\\" verticalAlign=\\\"middle\\\"> <mx:Button label=\\\"Entrar\\\" width=\\\"110\\\" height=\\\"32\\\" id=\\\"botEntrar\\\" click=\\\"Login();\\\"> <mx:icon>@Embed(source=\\\'../imagenes/iconos/22x22/password.png\\\')</mx:icon> </mx:Button> </mx:HBox> </mx:VBox> </mx:Panel> <mx:Label bottom=\\\"5\\\" left=\\\"5\\\" right=\\\"5\\\" id=\\\"txtStatus\\\"/> </mx:Canvas>
Yo tenia la idea de crear eventos para la clase como por ejemplo Usuario.alConectar o Usuario.alObtenerInfo, pero me saco lo mismo, no se como declarar estos \\\"Eventos\\\" propios de mi clase.
Espero no haberlos hecho bolas y hojala me puedan ayudar, cuando menos a poder comunicar a la clase con el componente que la manda llamar.
Gracias, hasta luego.[/code]