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

Impresion en Caja de Texto hiper lenta

Estas en el tema de Impresion en Caja de Texto hiper lenta en el foro de Flash y Actionscript en Foros del Web. Hola amigos, os escribo porque tengo un problema que te tiene desesperado. Tengo un flash que a traves de un codigo php recibe datos de ...
  #1 (permalink)  
Antiguo 18/07/2007, 17:46
 
Fecha de Ingreso: enero-2006
Mensajes: 29
Antigüedad: 11 años, 11 meses
Puntos: 0
Impresion en Caja de Texto hiper lenta

Hola amigos, os escribo porque tengo un problema que te tiene desesperado.

Tengo un flash que a traves de un codigo php recibe datos de una db en forma de xml. Aproximadamente hablamos de mostrar en esa caja entre 70 - 150 registros.

He comprobado que el acceso y la recepcion de los datos no sea un problema, es instantaneo, he probado que el problema no sea el usar fuentes embebidas, ni tampoco por usar css.

De hecho, si quito el código para rellenar la caja de texto y en su lugar hago un trace, se muestran los datos instantaneamente.

Conclusión, que pienso que el problema es que la caja de texto de flash es lentorra.

¿Podriais decirme si estoy en lo cierto y, en ese caso, explicarme alguna otra alternativa?

Os pego el código.

Código:
// Código para Embeber la fuente de la caja de texto.
var mi_formato = new TextFormat();
var mi_formato_bold = new TextFormat();

mi_formato.font = "Fuente 1";
mi_formato_bold.font = "Fuente 2";
caja.embedFonts = true;


// Creo un nuevo objeto de CSS haciendo referencia a la ruta del fichero y lo aplico a la caja de texto.
var myCSS = new TextField.StyleSheet();
var cssURL = "../estilos/textos_flash.css";

myCSS.onLoad = function(exito) 
{
        if (exito) 
	{
                  caja.styleSheet = myCSS;
    	}	
};
myCSS.load(cssURL);


// Creo un nuevo objeto XML  haciendo referencia al php que gestiona la agenda, lo recorro y lo maqueto.
var obj_xml:XML = new XML();
var n_nodos:Number;
var i:Number;

obj_xml.ignoreWhite = true;

obj_xml.onLoad = function(exito) {
        if (exito) 
        {
		n_nodos = obj_xml.firstChild.childNodes.length;
		caja.htmlText = '';
		for( i = 0; i < n_nodos; i++)
		{
			caja.htmlText = caja.htmlText + '<b><span class="fecha">' + obj_xml.firstChild.childNodes[i].childNodes[0].firstChild.nodeValue + '</span>' + ' - <span class="espectaculo">' + obj_xml.firstChild.childNodes[i].childNodes[4].firstChild.nodeValue + '</span></b>';
			caja.htmlText = caja.htmlText + '<span class="sangrado">';
			caja.htmlText = caja.htmlText + '<br />' + obj_xml.firstChild.childNodes[i].childNodes[3].firstChild.nodeValue + ' (' + obj_xml.firstChild.childNodes[i].childNodes[2].firstChild.nodeValue + ')';
			caja.htmlText = caja.htmlText + '<br />' + obj_xml.firstChild.childNodes[i].childNodes[1].firstChild.nodeValue;
			caja.htmlText = caja.htmlText + '</span><br /><br />';
		}
	} 
};

obj_xml.load("gestor_agenda.php");

stop();
  #2 (permalink)  
Antiguo 18/07/2007, 18:27
 
Fecha de Ingreso: septiembre-2006
Mensajes: 1.193
Antigüedad: 11 años, 2 meses
Puntos: 30
Re: Impresion en Caja de Texto hiper lenta

puede ser por que solo uses un XML para leer los datos y al ser tantos registros (nodos) flash tarda en leerlos aunque en tu caja de texto leas el primer nodo del XML, flash cargara todos los 150 registros del archivo y si a eso le sumas que cargue el .css se tardara unos segundos mas.

si usas el componente de campo de texto quitalo y mejor dibuja uno con flash.

y para que no tarde tanto podrias hacer la consulta directamente con php a aql. osea solo obtener el registro que te interesa pienso yo..., aunque no lo he intentado por que no suelo usar los .css con flash.
  #3 (permalink)  
Antiguo 18/07/2007, 18:32
 
Fecha de Ingreso: enero-2006
Mensajes: 29
Antigüedad: 11 años, 11 meses
Puntos: 0
Re: Impresion en Caja de Texto hiper lenta

mmm, no se, en realidad eso creo que no afecta, veras, tal vez no me expliqué bien.

El proceso de lectura de datos es cortisimo, porque si en lugar de imprimir los datos en la caja de texto lo hago con trace en modo de depuración se puede ver que en realidad no es lento.

Lo que si se toma su tiempo es el proceso de asignacion a la caja de texto, ahi se toma un retardo inexplicable.

Y no tiene nada que ver con las css porque si se las quito tarda lo mismo.

A ver si alguien me puede ayudar porque esto me tiene al borde del desastre.

Gracias de antemano.
  #4 (permalink)  
Antiguo 18/07/2007, 19:16
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 11 años, 3 meses
Puntos: 0
Re: Impresion en Caja de Texto hiper lenta

intenta no hacer esto
caja.htmlText = caja.htmlText + '<b><sp......

sino almacena todo el texto dentro de una variable asi
mitexto += '<b><sp......
y despues del for imprime dentro del textbox.

Con esto deberia acelerarse mucho el renderizado

Saludos X.
  #5 (permalink)  
Antiguo 18/07/2007, 20:01
 
Fecha de Ingreso: enero-2006
Mensajes: 29
Antigüedad: 11 años, 11 meses
Puntos: 0
Re: Impresion en Caja de Texto hiper lenta

No me lo puedo creer, era por eso seyacat, habia probador a guardarlo en una variable y luego pasarla al campo texto, y seguia igual de lento, la clave esta en la asignacion.

Que cosa mas curiosa, yo vengo de otros lenguajes de programacion y pensaba que eso no era un problema, es decir, yo usaba:

cosa = cosa + "mas cosas";

y ahora uso:

cosa += "mas cosas";

y funciona perfect.

Un millon de gracias tio, de verdad. Saludos.
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 06:20.