Foros del Web » Creando para Internet » Flash y Actionscript »

Por qué son tan chapuceros ???

Estas en el tema de Por qué son tan chapuceros ??? en el foro de Flash y Actionscript en Foros del Web. Hola a todos: Que sepais q este post es sólo para desahogarme. Recientemente he "avanzado" en esto de actionscript y para poder hacerlo he instalado ...
  #1 (permalink)  
Antiguo 04/11/2004, 10:23
 
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Desacuerdo Por qué son tan chapuceros ???

Hola a todos:

Que sepais q este post es sólo para desahogarme. Recientemente he "avanzado" en esto de actionscript y para poder hacerlo he instalado el nuevo Flash Mx 2004 Pro, version 7.2. (de paso me pregunto el pq de ciertos cambios en la estructura, a mi opinión a peor).

A lo q iba; en mi trabajo estoy realizando una aplicación en Flash, q incorporará, si action script 2.0 me deja, lectura de XML, acceso a base de datos desde Asp, inserción en Base de datos, un sistema de autoinstalación y una auto-actualización, ya q el propósito de la aplicación es q resulte ser un cd con productos, a modo de catálogo.

Pues bien, todo iba perfecto hasta q decidí hacer el cambio. Como debía hacer un acceso restringido de usuarios tal y como había visto en cristalab, decidí pasarme a Flash 2004. Hasta ese momento la aplicación funcionaba bien: leía de XML, mostraba imágenes según esos datos, y dependiendo la imagen seleccionada, mostraba unas caractarísticas para elegir. Y luego todo eso se almacenaba en un carrito dentro de la aplicación.

Cual ha sido mis sorpresa q al convertir todo a AS 2.0 parte de lo anterior ya no funciona. Sí lee de XML. Sí muestra las imágenes. Pero No muestra las opciones q acompañan a cada imagen.

En un principio pensé q era problema mio (novatillo), pero he vuelto a probar y lo único q me dice el Flash, al convertir de AS 1.0 a AS 2.0 es q la siguiente sentencia no es correcta:

Código:
System.usecodepage = true;


La solución es poner esto

Código:
System.useCodepage = true;


Chorrada, todo sea dicho de paso.


Epitafio: Si hay cosas q cambian de una versión a otra, pq **** no lo dicen?
  #2 (permalink)  
Antiguo 04/11/2004, 10:25
 
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Por si a alguien le pica la curiosidad, parte del código q utilizo, donde pienso q debe estar la incompatibilidad, es este:

Código:
// Listar y mostrar elementos de un tipo y altura 
function listadocat (categoria){ 
   //   Borrar posibles elementos del listado anterior 
      eliminar_elem(); 
   //   inicializar valores 
   horiz = 0; 
   verti = 0; 
   busqueda = 0; 
   _root.co = 0; 
   // buscar modelo en el documento 
   for (busca=0; busca<cuantostotal; busca++){ 
      comprobar_tip = ruta.mod[busca].tipo; 
      if (comprobar_tip == categoria){ 
         // Crear movie para mostrar 
         _root.co ++; 
         _root.contenido.attachMovie ("vacio", "mod_"+_root.co, _root.co); 
         base = eval("_root.contenido.mod_"+_root.co); 
         // Introducir Datos al movie 
         ref = ruta.mod[busca].ref 
         base.ref = ref; 
         // Posición 
            if (horiz == 3){ 
               horiz = 0; 
               verti++; 
            } 
         base._x = horiz * 160; 
         base._y = verti * 154; 
         horiz++; 
         loadMovie ("imagenes/"+ref+".swf","contenido.mod_"+_root.co+".imagen"); 
         busqueda = 1; 
      } 
   } // for 
   if (busqueda == 0){ 
      _root.no_existen._visible = true; 
//      gotoAndStop ("no_elem");    
   } 
} // fin function 



// Listar y mostrar elementos de un tipo 
function listado (categoria, subcategoria){ 
   //   Borrar posibles elementos del listado anterior 
      eliminar_elem(); 
   //   inicializar valores 
   horiz = 0; 
   verti = 0; 
   busqueda = 0; 
   _root.co = 0; 
   // buscar modelo en el documento 
   for (busca=0; busca<cuantostotal; busca++){ 
      comprobar_tip = ruta.mod[busca].tipo; 
      comprobar_med = ruta.mod[busca].medida; 
      if (comprobar_tip == categoria && comprobar_med == subcategoria){ 
         // Crear movie para mostrar 
         _root.co ++; 
         _root.contenido.attachMovie ("vacio", "mod_"+_root.co, _root.co); 
         base = eval("_root.contenido.mod_"+_root.co); 
         // Introducir Datos al movie 
         ref = ruta.mod[busca].ref 
         base.ref = ref; 
         // Posición 
            if (horiz == 3){ 
               horiz = 0; 
               verti++; 
            } 
         base._x = horiz * 160; 
         base._y = verti * 154; 
         horiz++; 
         loadMovie ("imagenes/"+ref+".swf","contenido.mod_"+_root.co+".imagen"); 
         busqueda = 1; 
      } 
   } // for 
   if (busqueda == 0){ 
      _root.no_existen._visible = true; 
//      gotoAndStop ("no_elem");    
   } 
} // fin function 



// Ver ficha de un único modelo 
function ver_ficha(refer){ 
   // Inicializa el valor del ancho 
   ficha.ancho=""; 
   // Inicializa el Clip Apertura 
   _root.ficha.v.gotoAndStop (1); 
   // Inicializa el Clip Cajeo 
   _root.ficha.cajeo2.gotoAndStop(1); 
   // Ocultar elementos por delante 
     ocultar_front(); 
   // buscar modelo en el documento 
   busqueda = 0; 
   for (busca=0; busca<cuantostotal; busca++){ 
      comprobar = ruta.mod[busca].ref; 
      if (comprobar == refer){ 
         // Rescatar datos 
         ref = ruta.mod[busca].ref 
         texto = ruta.mod[busca].texto; 
         mano = ruta.mod[busca].mano; 
         tipo = ruta.mod[busca].tipo; 
         articulo = ruta.mod[busca].articulo; 
         medida = ruta.mod[busca].medida; 
         // Mostrar ficha 
         ficha._visible = true; 
         // Ficha activada (mostrada) 
         _root.activaficha = 1; 
         // Almacenar datos a ficha 
         ficha.referencia = ref; 
         ficha.texto = texto; 
//trace(mano); 
         ficha.mano = mano; 
         ficha.articulo = articulo; 
         ficha.categ = tipo+" "+medida; 
         ficha.altura = medida; 
//ficha.acabado = grupoInicial; 
         loadMovie ("imagenes/"+ref+".swf","ficha.imagen"); 
         busqueda = 1; 
         break; 
      } 
   } 
    
   if (busqueda == 0){ 
      _root.no_existen._visible = true; 
//      gotoAndStop ("no_elem"); 
   } 
    
   // Introducir anchos 
   // Eliminar posibles botones y grupos previos 
      for (h=0; h<15; h++){ 
        base = eval("ficha.anc"+h) 
        base.removeMovieClip (); 
      } 
      ficha.ocultar_grupos(); 
   cuantosanchos = ruta.mod[busca].ancho.length; 
     // Controlar si el resultado irá en una o dos filas (ver 'Posicionarlo') 
     if (cuantosanchos > 6){ 
        var posy = 100; 
     } else { 
          var posy = 100; 
     } 
     posx = 0; 
   // Crean los Arrays con los anchos y sus grupos 
   for (an=0; an<cuantosAnchos; an++) { 
      recoge = new Array (); 
      recoge.push (ruta.mod[busca].ancho[an].medida); 
      // Separar los valores para introducirlos en el Array 
      anchos = ruta.mod[busca].ancho[an]._valor; 
      otra = anchos.split (","); 
      // unir los dos arrays en uno 
      ficha[an] = recoge.concat(otra); 
      // Crear cada boton con sus datos 
      ficha.attachMovie ("anchoclip", "anc"+an, an); 
         // Posicionarlo 
         if (an == 7) { var posy = 125; posx = 0; } 
         eval("ficha.anc"+an)._x = -120 + (40*posx); 
         eval("ficha.anc"+an)._y = posy; 
         posx++; 
      eval("ficha.anc"+an).anchura = ficha[an][0]; 
      eval("ficha.anc"+an).valor = an; 
   } // for 
} // funcion 




// Listar y mostrar elementos de un articulo: Vitrinas... 
function listado_art (ancho, articulo, apertura){ 
   gotoAndStop("ok"); 
   //   Borrar posibles elementos del listado anterior 
      eliminar_elem(); 
   //   inicializar valores 
   busqueda = 0; 
   horiz = 0; 
   verti = 0; 
   varan = 0; varar = 0; varap = 0; 
   _root.co = 0; 
   // buscar modelo en el documento 
   if (articulo != "") varar = 1; 
   if (apertura != 0) varap = 1; 
   //trace (varar+" "+varap+" / "+apertura); 
   for (busca=0; busca<cuantostotal; busca++){ 
      mostrar_art = ruta.mod[busca].articulo; 
      aperturar = ruta.mod[busca].mano; 
      if (mostrar_art == articulo or varar == 0){ 
       if (aperturar == apertura or varap == 0){ 
          if (ancho > 0){ 
          // Obtener si el ancho coincide 
            cuantosanchos = ruta.mod[busca].ancho.length; 
            varan = 1; 
            for (an=0; an<cuantosAnchos; an++) { 
              anchor = ruta.mod[busca].ancho[an].medida; 
              if (anchor == ancho){ 
               varan = 2; 
               //trace (varan); 
               break; 
              } 
            } 
          } 
        if (varan == 2 or varan == 0){ 
         // Crear movie para mostrar 
         _root.co ++; 
         _root.contenido.attachMovie ("vacio", "mod_"+_root.co, _root.co); 
         base = eval("_root.contenido.mod_"+_root.co); 
         // Introducir Datos al movie 
         ref = ruta.mod[busca].ref 
         base.ref = ref; 
         // Posición 
            if (horiz == 3){ 
               horiz = 0; 
               verti++; 
            } 
         base._x = horiz * 160; 
         base._y = verti * 154; 
         horiz++; 
         loadMovie ("imagenes/"+ref+".swf","contenido.mod_"+_root.co+".imagen"); 
         busqueda = 1; 
        } 
       } 
      } // if 
   } // for 
   if (busqueda == 0){ 
      _root.no_existen._visible = true; 
//      gotoAndStop ("no_elem"); 
   } 
} // fin function
P.D: Si alguien encuentra algo q es incompatible en AS 2.0, q por favor me lo diga, q mi trabajo depende de ello.


P.D.D: Sergio, si me lees, q sepas q todo es culpa tuya
  #3 (permalink)  
Antiguo 04/11/2004, 10:48
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 10 meses
Puntos: 193
1.- Yo no veo AS2 por ningun lado sigues usando AS1

2.- Ahora Flash al momento de copilar el SWF es mas estricto.... Fijate que inicialices todas las variables que uses.

por ejemplo

Código:
function algo(par) {
	for (a=0; a<5; a++) {
		basex = par*c;
		c++;
		trace(basex);
	}
}
algo(5);
Este codigo en el MX funciona bien. regresa lo siguiente:

Código:
0
5
10
15
20
En cambio en mismo codigo en el MX 2004 regresa esto

Código:
NaN
NaN
NaN
NaN
NaN
Para que funcione en MX 2004, repito tienes que inicializar tu variable antes de usarla. entonces queda asi

Código:
function algo(par) {
	//------
	c = 0;
	//------
	for (a=0; a<5; a++) {
		basex = par*c;
		c++;
		trace(basex);
	}
}
algo(5);
Y funciona.. ahora todo esto es AS1 ahora el AS2 seria algo asi:

Código:
function algo(par:Number):String {
	var c:Number = 0;
	for (var a = 0; a<5; a++) {
		var basex:Number = par*c;
		c++;
		trace(basex);
	}
	return "Termino";
}
var out:String = algo(5);
trace(out);
Claro sin meternos con las Clases que eso ya es otra cosa..

Conclucion.. Debes de revisar en tu codigo si hay variables que no este definidas...
  #4 (permalink)  
Antiguo 04/11/2004, 11:08
 
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
entiendo....

Mi queja no es por AS 2.0 (pq no utilizo), sino el cambio de sistema de compilación. Yo aprendía a programar en C y C++ y sé lo q es cambiar de compilador y q no funcione el mismo código. Pero pensaba q eso ya estaba superado por parte de Macromedia, o q al menos avisarían al exportar código.

Creo q mi problema es con las variables q utilicen mayúsculas o no. Ando tras la pista.

Gracias por la aclaración.
  #5 (permalink)  
Antiguo 04/11/2004, 12:21
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 10 meses
Puntos: 193
Yeap tambien el compildor ya es sensible a mayusculas y minusculas

Código:
//En el MX regresa
algo = 5;
trace(algo); //5
trace(Algo); //5
}
En el MX 2004

Código:
algo = 5;
trace(algo); //5
trace(Algo); //undefined
}
  #6 (permalink)  
Antiguo 04/11/2004, 12:40
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 20 años, 4 meses
Puntos: 1
A mi me esto me tiene de muy mala leche. Para el que viene de C, bien. Para los que llevamos años con Flash-AS, Director Etcs, creo, y a modo de titulo personal, que es una ptda (y de verdad que perdón).

Tengo un conector hecho en as1, que envia una query a 1 php con unos campos, lo procesa, lo escupe y el flash lo convierte a un array/tabla, siendo totalmente transparente para el desarrollador. Bien. Lo intento transformar a una clase en AS2 y GRRRRRRRRRRRRRRRRRRRRRRRR. A perder tiempo, cuando uno no lo tiene.

Lo dicho.
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
  #7 (permalink)  
Antiguo 04/11/2004, 12:41
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 20 años, 4 meses
Puntos: 1
TB Creo que la sensibilidad de mays mins si es buena.
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
  #8 (permalink)  
Antiguo 04/11/2004, 12:44
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 10 meses
Puntos: 193
bueno si nunca haz trabajado con Clases (POO) puede ser un poco lento pero una vez que comprendas los conceptos basicos todo es simple....

De cualquier forma vale la pena.. la perdida de tiempo
  #9 (permalink)  
Antiguo 04/11/2004, 12:46
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 20 años, 4 meses
Puntos: 1
Si.... si simple es.

Pero a torcer otra vez la tuerca
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
  #10 (permalink)  
Antiguo 04/11/2004, 12:56
 
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses
Puntos: 0
Cita:
Iniciado por Benemerit
Si.... si simple es.

Pero a torcer otra vez la tuerca
, yo no lo hubiese explicado mejor.

El lenguaje C es una muy buena forma de programar, a pesar de q todavía me colean las asignaturas correspondientes en la Uni

Pero creo q esta vez se han pasao un poquito los de Macromedia. Cuando yo programo bajo Linux, tengo un compilador y un procesador de errores q facilitan la tarea. Si encima q trabajas en un entorno gráfico q tienes q pensar en movimientos, ya es la repera. Pienso q es un adelanto si efectivamente todo funciona con programación orientada a objetos, pero la gente q nunca haya programado "a lo bestia" tendrá muchos problemas en realizar cosas muy grandes (yo entre ellos).

Espero q el siguiente paso de Macromedia sea un compilador óptimo de código.
  #11 (permalink)  
Antiguo 05/11/2004, 11:11
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 20 años, 4 meses
Puntos: 1
pssssssssss

ya tengo la dichosa class ....

:P
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:16.