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 Javascript
:
Ver originalstop();
//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 Javascript
:
Ver originalAlertManager.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?
Gracias.