viernes, 14 de mayo de 2010

Flash: Actionscript 2.0 - Texto html se desplaza al pasar sobre un link



El problema
Sí. hijos, sí. Una gracia graciosa ya conocida del maravilloso Flash es esa. En ocasiones (prácticamente cuando a Flash le place) los textos html que contienen enlaces se desordenan, se desplazan, desorganizan... no sé cómo decirlo, al pasar por encima con el ratón. Como una imagen vale más que mil palabras, os mando dos para que valga más que dos mil:

Texto sin pasar por encima con el ratón


Texto al pasar por encima con el ratón


He de decir que en mi caso las características del campo de texto son:
  • es html
  • tiene una hoja de estilos externa cargada
  • el texto contiene un con 'tabstops' incluidos.


¿Por qué pasa esto?
¡Buena pregunta! Sólo os puedo decir que el campo de texto mide de ancho aproximadamente lo que mide la imagen que veis. Al pasar por encima en texto se torna naranja e inexplicablemente se dilatan los espacios entre palabras, provocando un feo efecto que obliga al texto a desplazarse una línea por debajo. En teoría ese desplazamiento se debe a que Flash intenta ajustar el texto al ancho del campo de texto que lo contiene. Todos los campos de texto tienen una propiedad en Flash llamada "wordWrap" que por defecto está establecida en "true", y esta propiedad es la que provoca que el texto se ajuste. Ahora, ¿por qué se ajusta cuando se pasa por encima con el ratón si el texto no varía en absoluto en tamaño, alineación...? Expediente X...

¿Cómo se soluciona?
Indicándole a Flash que no ajuste el texto:

texto_txt.wordWrap = false;

Esto es un arma de doble filo. Os servirá siempre y cuando el ancho del texto sea menor que el ancho del campo de texto que lo contiene. Si no es así, el texto desaparecerá por la derecha sin saltar a la línea siguiente.

Agradecimientos
Démosle gracias a Flash por esta utilísima característica que a todos los que la hemos sufrido nos ha hecho tan felices y dichosos. Démosle gracias por documentar tan detalladamente sus bugs, y no obligarnos a probar durante horas distintas soluciones desesperadas y en ocasiones ilógicas hasta dar con la solución.

Gracias a San Google bendito que, aunque esta vez no me ha ayudado, lo ha hecho en tantísimas ocasiones.