Comunidad de diseño web y desarrollo en internet online

Archivo FLA ¿ Dañado, inestable o corrupto ?

Citar            
MensajeEscrito el 07 Jul 2008 04:52 am
Hola a todos

Estoy trabajando con Flash CS3 y AS3

Se me han presentado las siguientes 2 situaciones con el mismo archivo FLA:

1) Tengo un archivo FLA que de repente empezó a marcar error en el script en un botón, no encontraba el porque de este error ya que ha esta escena no se le había hecho ninguna modificación, borre el botón del escenario y lo cargue nuevamente de la biblioteca y le di el nombre. Y EL PROBLEMA SE RESOLVIO.

2) En este mismo archivo FLA esta pasando algo raro con unas variables que están declaradas como globales en una función se les asigna un valor
nombre = 'Juan';
edad = '43';
sexo = 'M';


Estas mismas variables globales(nombre, edad,sexo) , en otra función, regresan el valor de null cuando deberían tener los valores de Juan 43 y M.

¿Sospecho que el archivo FLA esta dañado, corrupto o inestable? ay alguna forma de corregir esta situación el programa en AS3 tiene muchas horas de trabajo.

Alguien tiene alguna sugerencia..................!!!!!!!!!!!!!

De antemano gracias por su ayuda y comentarios

Por lororojo

52 de clabLevel



 

msie
Citar            
MensajeEscrito el 07 Jul 2008 07:59 am
Si pusieras algo del código quizás te pudiera ayudar, me refiero al de la función en que estas variables te dan null. No creo que sea ningún problema del programa.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 07 Jul 2008 10:36 pm
Hola este es el problema a más detalle, tengo una base de datos en MySQL y trato de comunicarme a traves de AS3.

estan declaradas las siguientes variables en forma global

Código :

import flash.events.*;
import flash.net.*;
import flash.utils.*;

var st_error:String;
var st_operacion:String;
var st_existe:String;

var st_nombre:String;
var st_edad:String;
var st_sexo:String;


1) Una pantalla tiene los campos de texto de usuario_txt, grupo_txt, clave_txt
quiero verificar si estos datos existen en la base de datos para permitirle el acceso a traves de una función llamada function accion_Base_Datos (accion:uint):void. donde el parametro de la acción indica que se va ha hacer, el valor de 0 indica que solo se va a verificar si existe el alumno y permitirle el acceso.

Este es el código de la función:

Código :

function accion_Base_Datos (accion:uint):void
{
   // Crear un URLRequest para contener los datos a enviar al archivo PHP
   var vrequest:URLRequest = new URLRequest("http://www....../enviar_cargar.php");
   
   // Craer pares nombre-valor para enviar al servidor
   var vars_enviar:URLVariables = new URLVariables ();
   
   no_accion_DB = accion;
   // Definir los contenidos de las variables a enviar al archivo PHP
   switch (no_accion_DB) {
      case 0: //Existe alumno
         vars_enviar.accion = no_accion_DB; // PHP si lo reconoce como número a $php_accion = $_POST['accion']; -> $php_accion = 2;
         vars_enviar.usuario = usuario_txt.text;
         vars_enviar.grupo = grupo_txt.text;
         vars_enviar.clave = clave_txt.text;      
         break;
      case 1: // Alta de alumno

         break;

   }
 
    vrequest.method = URLRequestMethod.POST;
   vrequest.data = vars_enviar;
   
   // Craer un URLLoader para enviar los datos y recibir una respuesta
   var loader:URLLoader = new URLLoader();
   // Esperar que el script devuelva variables codificadas emn URL
   loader.dataFormat = URLLoaderDataFormat.VARIABLES;
   // Esperar el evento COMPLETE para leer la respuesta del servidor
   loader.addEventListener(Event.COMPLETE,handleComplete_BD);
   // Enviar los datos en el URLRequest fuera del script
   loader.load(vrequest);

}


El archivo php regresa la información a traves de echo con los siguientes campos:
error_php
operacion
existe
nombre
edad
sexo
..... etc


La función para el evento COMPLETE es el siguiente:

Código :


function handleComplete_BD(event:Event):void {
   
   var loader:URLLoader = URLLoader(event.target);

   st_error = loader.data.error_php;
   st_operacion = loader.data.operacion;
   st_existe = loader.data.existe;
   
   if (loader.data.existe=="si") { 
      st_nombre = loader.data.nombre;
      st_edad = loader.data.edad;
      st_sexo = loader.data.sexo;
   }
    else {
          trace("No existe el alumno");
   }
   
   texto_php.appendText(" COMPLETE terminado.");
                trace(st_existe,st_nombre ,st_edad); //Aparece si,Juan,43
}


Hay un boton llamado boton_ingresa, en caso que el alumno exista en la base de datos se va a la escena PRESENTACION, el boton responde al siguiente codigo

Código :

function f_presentacion(event:MouseEvent):void
{
    accion_Base_Datos(0);

  trace(st_existe, st_nombre ,st_edad) //aparece null,null,null
 
  if (st_existe == "si") {
   boton_ingresa.removeEventListener(MouseEvent.CLICK, f_presentacion);
   gotoAndPlay(1, "presentacion");
   }
   else {
      trace("El alumno no existe")';
   }
}
boton_ingresa.addEventListener(MouseEvent.CLICK, f_avanza_presentacion);



Lo que creo que esta ocurriendo es que el archivo swf responde antes o más rápido que la function handleComplete_BD, y por eso el resultado de null,null,null en la function f_presentacion y en la instruccion de trace(st_existe,st_nombre ,st_edad); //Aparece si,Juan,43.
en la function handleComplete_BD(event:Event):void

No se como hacer que termine primero la function handleComplete_BD,
trate de poner una variable switch_BD inicializada en false antes de llamar a accion_Base_Datos(0);
y al final de function handleComplete_BD la variable switch_BD la colocaba en true, para garantizar que ya termino, pero no funciona.

Gracias por tu ayuda

Por lororojo

52 de clabLevel



 

msie
Citar            
MensajeEscrito el 08 Jul 2008 03:11 am
Tambien trate agregando el evento ProgressEvent.PROGRESS despues de la instrucción loader.addEventListener(Event.COMPLETE,handleComplete_BD);
con la finalidad de que cuando se cumpliera el 100% el evento COMPLETE ya habia terminado,
este es el código y el resultado es:

// Esta es la salida Loaded: 392Total: 0 Percent: Infinity

Código :

function accion_Base_Datos(accion:uint):void
      ...
      ...
      ...

   loader.addEventListener(Event.COMPLETE,handleComplete_BD);
   loader.addEventListener(ProgressEvent.PROGRESS,handleProgress_BD);

   
   // Enviar los datos en el URLRequest fuera del script
   loader.load(vrequest);
   
}

function handleProgress_BD(event:ProgressEvent):void 
{
 
  var percent:Number = Math.round(event.bytesLoaded / event.bytesTotal * 100);
  
  _output.text = "Loaded: " + event.bytesLoaded + "Total: " + event.bytesTotal + " Percent: " + percent;
   
// Esta es la salida Loaded: 392Total: 0 Percent: Infinity
}


Por lororojo

52 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Jul 2008 08:23 am
Lo que debes hacer es deshabilitar el botón, y dentro de la función que se lanza con el event.complete habilitarlo

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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