Comunidad de diseño web y desarrollo en internet online

Problema con DisplayObject

Citar            
MensajeEscrito el 09 Ago 2012 03:13 am
Hola.
Gracias por leer esto.

Soy novato en AS3 y me estoy enfrentando a mi primera aplicación de escritorio en Flash CS5 + AS3.

Mi problema es que estoy usando la clase AlertManager de yahoo Astra Library (http://developer.yahoo.com/flash/astra-flash/classreference/) y los dialogos con esta clase me funcionan perfecto y lucen espectaculares por lo que no quisiera prescindir de ellos. Como el proyecto lo estoy compilando con MDM Zinc 4.0 tengo la opción de usar la extensión mdm_dialogs pero honestamente me parecen horribles estéticamente hablando.

El único inconveniente que he tenido con esta clase es que cuando quiero emitir una alerta dentro de la función del código a continuación, me genera el siguiente error:

TypeError: Error #1034: Error de conversión forzada: no se puede convertir global@6b970d1 en flash.display.DisplayObject.
at MethodInfo-5557()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

Código ActionScript :

    stop();
    //0-importar clases
    import mdm.*;
    import flash.events.MouseEvent;
    import flash.text.TextFormat;
    import stbroglobal;
    import es.yporqueno.crypto.*;
    import fl.controls.TextInput;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import com.yahoo.astra.fl.managers.AlertManager;
    import flash.display.DisplayObject;
    //0-fin
    //1-definiendo función pública de acceso automático
    stbroglobal.login_system = function(type:String, event:Event=null):void
    {
        if(mdm.Application.path!=null)
        {
    ///a-cargar datos de usuario
            var ruta:String = mdm.Application.path+"userdata.txt";
            var cache_exists:Boolean = mdm.FileSystem.fileExists(ruta);
                if(cache_exists)
                {
                    var aut_data_collect:String = mdm.FileSystem.loadFile(ruta);
    ///a-fin
    ///b-enviar datos al servidor para autenticar
                    if(aut_data_collect.length>12)
                    {
                        stbroglobal.show_loading();
                        var request:URLRequest = new URLRequest(stbroglobal.serverpath+"/php/auto_login3.php");
                        var loader:URLLoader = new URLLoader();
                        var loaderVars:URLVariables = new URLVariables();
                        loaderVars.data_transfer = aut_data_collect;
                        request.data = loaderVars;
                        request.method = URLRequestMethod.POST;
                        loader.addEventListener(Event.COMPLETE, handleComplete);
                        loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
                        loader.load(request);
                        function handleComplete(event:Event)
                        {
                            var loader_response:URLLoader = URLLoader(event.target);
                            var server_response:String = loader_response.data;
                            if(server_response.indexOf("OK")>=0)
                            {
                                var txt_output:String = server_response;
                                var array_coll_output:Array = txt_output.split("|");
                                stbroglobal.current_user = array_coll_output[1];
                                stbroglobal.current_list = array_coll_output[2];
                                stbroglobal.serverpath = array_coll_output[3];
                                stbroglobal.current_version = array_coll_output[4];
                                gotoAndPlay("player");
                                stbroglobal.hide_loading();
                            }
                            else
                            {
                                AlertManager.createAlert(this, "Ocurrió un problema al tratar de contactar el servidor\rde autenticación.\rPor favor reintente mas tarde o \rcontacte a "+stbroglobal.support_msj+" para mas información.", "Error crítico No. "+stbroglobal.error1002+"!", ["OK"], stbroglobal.exit_app, null, true);
                            }
                        }
                        function onIOError(event:IOErrorEvent):void
                        {
                            //msj cuando falla el loadvars
                        }
                    }
                    else
                    {
                        //msj cuando falla la autenticación MD5
                    }
                }
                else
                {
                    //que hacer si el archivo está incorrecto
                }
        }
        else
        {
            //que hacer si la ruta no existe
        }
    }
    //1-fin
    //2-ejecutando autologin
    stbroglobal.login_system("auto");
    //2-fin


al parecer todo radica en la propiedad container

Código ActionScript :

AlertManager.createAlert(this,


la cual es un DisplayObject. El argumento this en esta función le indica a la clase cual es el DisplayObject que está creando el cuadro de alerta y es aquí donde mi ignorancia me está dando problemas pues si uso un alertmanager en la linea de tiempo funciona bien usando this (cual es el DisplayObject en este caso?) pero si lo uso en la función handleComplete de mi código, me da ese error.

Alguién sabe porqué sucede esto? :shock:

Gracias.

Por alexkudrow

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ago 2012 01:33 pm
Estas declarando funciones dentro de un encadenado de if, eso es un error conceptual, las funciones se deben declarar independientemente del flujo, luego ya las utilizas o no. Para saber a que apunta this, prueba trazarlo

trace("Estoy en "+this)

Te sale la clase a la que apunta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Ago 2012 10:54 pm
Gracias solisarg.
Solucioné el problema sacando las funciones del if y declarando las variables por fuera también. Me has ayudado muchísimo.

Por alexkudrow

33 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.