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

Problema con carga de texto externo formateado HTML

Estas en el tema de Problema con carga de texto externo formateado HTML en el foro de Flash y Actionscript en Foros del Web. Saludos. Mi problema es que al cargar en el swf un texto externo con etiquetas HTML, al cual le aplico formato con un CSS tambien ...
  #1 (permalink)  
Antiguo 18/05/2006, 19:46
 
Fecha de Ingreso: marzo-2006
Mensajes: 24
Antigüedad: 11 años, 8 meses
Puntos: 0
Problema con carga de texto externo formateado HTML

Saludos. Mi problema es que al cargar en el swf un texto externo con etiquetas HTML, al cual le aplico formato con un CSS tambien externo, el texto se muestra un instante sin formato (es decir, como se mostraria un html sin formato: fuente Times New Roman, color negro y tamaño creo que 10) hasta que se aplica el formato CSS, por lo que resulta un efecto muy feo.

¿Seria posible evitar esto, es decir, que si se tiene que ver el texto, que sea ya formateado?

Aqui adjunto el codigo que he usado:

Cita:
var texto_con_scroll:Function = function (el_texto:String, donde:MovieClip, identificador:String, ancho:Number, alto:Number, en_x:Number, en_y:Number, css:String){
//primero borramos el texto_con_scroll del mismo nombre
borrar_texto_con_scroll(donde,identificador);

//creamos la hoja de estilo que se va a usar para darle formato y la cargamos
var hoja_estilo = new TextField.StyleSheet();
hoja_estilo.load(css);

//creamos un movieClip contenedor (contendrá el campo de texto)
var contenido_ref:MovieClip = donde.createEmptyMovieClip(identificador,donde.get NextHighestDepth());
//la posicionamos en las coordenadas correspondientes
with (contenido_ref){_x=en_x;_y=en_y;}

//creamos el campo de texto dentro de 'contenido_ref'
var texto_ref:TextField = contenido_ref.createTextField('texto', contenido_ref.getNextHighestDepth(), 0, 0, ancho, alto);
//modificamos sus propiedades
with (texto_ref) {html = true;multiline = true;wordWrap = true;selectable = true;condenseWhite = true;styleSheet = hoja_estilo;htmlText = el_texto+'<br/><br/><br/>&nbsp;';autoSize = true;}

//ahora creamos la máscara
var mascara_ref:MovieClip = donde.createEmptyMovieClip('mascara_'+identificado r, donde.getNextHighestDepth());
//dibujamos un rectángulo con las dimensiones ancho x alto y lo posicionamos en_x , en_y
with(mascara_ref){beginFill(0x000000);moveTo(0,0); lineTo(ancho,0);lineTo(ancho,alto);lineTo(0,alto); lineTo(0,0);endFill();_x=en_x;_y=en_y;}

//enmascaramos el contenedor del texto
contenido_ref.setMask(mascara_ref);

//ahora agreamos la barra de scroll
var scroll_ref:MovieClip = donde.attachMovie('scroller_v', 'scrollbar_'+identificador, donde.getNextHighestDepth(), {_x:ancho+en_x+7, _y:en_y});
//le damos las referencias sobre los que debe actuar
scroll_ref.clip = contenido_ref;
scroll_ref.mask = mascara_ref;
//y hechamos a andar el scroll
scroll_ref.gotoAndPlay(2);
}

//con esta función borraremos el texto_con_scroll cuyo 'indenfiticador' sea: identificador del mc 'donde'
var borrar_texto_con_scroll:Function = function(donde:MovieClip,identificador:String){
donde[identificador].removeMovieClip(); //el contenedor del texto
donde['mascara_'+identificador].removeMovieClip(); //su respectiva máscara
donde['scrollbar_'+identificador].removeMovieClip(); //y su scroll
}

textos = new LoadVars();
textos.onLoad = function(ok) {
if (ok) {
texto_con_scroll(this.texto, _root,'texto', 410, 380, 115, 75, 'style2.css');
}
};
//llamamos a la funcion pasandole el nombre del archivo de texto que vamos a cargar. Aplicamos un id aleatorio para que nunca cargue el archivo de texto de la cache del explorador
textos.load('archivodetexto.txt?id='+random(1000)) ;_global.varquienes=2;
stop();
Este codigo lo he sacado de aqui (gracias luistar): http://www.forosdelweb.com/f16/html-textfield-con-css-scroll-375584/

Última edición por cogombo; 19/05/2006 a las 14:05
  #2 (permalink)  
Antiguo 18/05/2006, 20:04
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 14 años, 5 meses
Puntos: 406
Hola cogombo:
Porque no formateas tu texto dentro del mismo archivo.txt con los tag del HTML y lo cargas dentro de un campo de texto dinámico activando el opción Generar texto como HTML, en el panel de propiedades de texto.

Espero haberte sido de ayuda.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #3 (permalink)  
Antiguo 19/05/2006, 07:27
 
Fecha de Ingreso: marzo-2006
Mensajes: 24
Antigüedad: 11 años, 8 meses
Puntos: 0
Gacias Bandit por tu respuesta. Los motivos por los que uso este codigo son los siguientes:
- Hace el scroll que a mi me gusta.
- Puedo desvincular el formateo del texto totalmente en un css, esto me interesa para que el cliente pueda modificar el texto directamente, tan sólo teniendo en cuenta un par de etiquetas html, porque si no se lia.

Pero creo que voy a hacer lo que me has dicho. Voy a pasar del css y le meto el formateo en las etiquetas. Ya le dire al cliente que tenga cuidado y arreglado.

Gracias por el consejo.

Si alguien tiene otra solucion para que pueda conservar el css, bien recibida sera.

SAludos
  #4 (permalink)  
Antiguo 19/05/2006, 08:06
Avatar de Querube  
Fecha de Ingreso: noviembre-2003
Ubicación: chiclayo
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
qué tal si a la carga del css le aplicas una condición?

hoja_estilo.onLoad=function(ok){
if(ok){
//cargar el texto


}

}
Así no cargará el texto hasta que cargue el estilo del texto..

Bueno en teoría debería funcionar, suerte :)
__________________
Querube
[www.muchik.com]
"Advanced Services on Web"
  #5 (permalink)  
Antiguo 19/05/2006, 11:40
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
Hola...
una manera de solucionar:
- primero crea el contenedor del campo de texto dinámico como NO VISIBLE (_visible=false;)
- agrégale un evento onLoad a la hoja de estilo, cuando se cargue la hoja de estilos haces que el contenedor se haga visible

añadinos el evento onLoad
Código:
//creamos la hoja de estilo que se va a usar para darle formato y la cargamos
var hoja_estilo = new TextField.StyleSheet();
hoja_estilo.onLoad = function(ok){
	if(ok) contenido_ref._visible = true;
}
hoja_estilo.load(css);
el contenedor tiene inicialmente el valor _visible=false;
Código:
//creamos un movieClip contenedor (contendrá el campo de texto)
var contenido_ref:MovieClip = donde.createEmptyMovieClip(identificador,donde.getNextHighestDepth());
//la posicionamos en las coordenadas correspondientes
with (contenido_ref){_x=en_x;_y=en_y;_visible=false;}

siempre que puedas publica los archivos o la referencia ellos desde los cuales sacaste el ejemplo, asi el resto tendrá más posibilidades de ayudarte
http://www.forosdelweb.com/showthread.php?t=375584

me habeis dado una idea, le haré algunas modificaciones y agregaré algunas funcionalidades más en cuanto disponga de tiempo :D
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #6 (permalink)  
Antiguo 19/05/2006, 14:03
 
Fecha de Ingreso: marzo-2006
Mensajes: 24
Antigüedad: 11 años, 8 meses
Puntos: 0
Hombre, luistar! Si el ejemplo lo saque de ti... muy bueno.

La solucion que me has dado era la que yo pensaba, lo que pasa es que tampoco soy un experto en codigo, y no sabia como hacerlo.
Al final he optado por meterle el formato directamente en las etiquetas html, ya que de ese modo el texto me carga un poco mas rapido al no tener que esperar a cargar el css tambien, ademas lo he hecho antes de leer todas estas respuestas.
Por cierto, has visto que le he puesto un id aleatorio al texto? de ese modo nunca los cargara de la cache y asi siempre saldran lo cambios realizados en los textos.
Gracias a todos.
  #7 (permalink)  
Antiguo 19/05/2006, 14:33
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
la carga de texto no espera a que se carge el css, lo que sí espera es para que se haga visible, ambos inician la carga casi al mismo tiempo; cuando se termina de cargar el CSS, el contenedor de texto (ya si texto esté cargado o no) se hace visible...

el CSS debería ser opcional, y tmb lo que propones sobre cargar del caché, podria ser util... (ya pensando para una clase TextScroll a manera de práctica xD)

...
__________________
Si digo que soy mentiroso. ¿Lo soy?
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 07:42.