Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/05/2006, 18:46
cogombo
 
Fecha de Ingreso: marzo-2006
Mensajes: 24
Antigüedad: 18 años, 1 mes
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 13:05