WTF!: Error al cargar SWFs con textos TLF de Flash CS5

danii . jueves 30 de septiembre de 2010. a las 11:09

Este es uno de esos bugs de los que si no estás al tanto te pueden hacer perder una cantidad de tiempo considerable, y lo peor es que sucede en un escenario tan común como el cargar una peli flash dentro de otra.

Tal y como se describe en el título del post, al cargar una peli SWF que tenga un contenido de texto con el nuevo motor Text Layout Framework e intentar acceder a alguna de sus propiedades o métodos nos vamos a encontrar con un error en tiempo de ejecución que puede ser de conversión de tipo o de referencia, tal que así:

TypeError: Error #1034: Error de conversión forzada

ReferenceError: Error #1069: Propiedad foo no encontrada

Si os topáis con este problema, no os tiréis de los pelos: no es culpa vuestra, ni tampoco del componente/librería que estéis usando en ese momento. A mí por ejemplo me pasó montando mi primer proyecto en Gaia Framework y por supuesto mi primera reaccion fue echarle la culpa al pobre framework… pero no, se trata de un bug de Adobe Flash CS5.

Existen 2 soluciones, ninguna de las 2 realmente buena ni elegante que se describen aquí en una TechNote publicada por Adobe Support (la verdad es que no he encontrado ninguna descripción en castellano) y que voy a explicar a grandes rasgos (para más detalles, se puede consultar la TechNote antes mencionada):

  • La primera opción sería cambiar la vinculación del textLayout.swc a Combinada en código desde el panel de Configuración de Publicacion -> Configuración Avanzada de ActionScript 3.0. Cuidado porque además deberemos cambiar la exportación de las clases al fotograma 2, y encima las pelis SWF externas se compilarán con errores de forma independiente, aunque luego al ser cargadas funcionarán correctamente. Como hemos comentado, no demasiado elegante…
  • La otra opción es utilizar la clase SafeLoader que nos proporcionan desde Adobe en la propia TechNote en lugar del Loader de toda la vida a la hora de cargar contenidos con textos TLF.

Por supuesto, existe una 3ª solución alternativa a estas dos que, a la postre, ha sido por la que yo he optado: no utilizar los maravillosos textos con motor TLF a menos que sea estrictamente necesario… y es una pena, porque potentes son y mucho.

Etiquetas: , , , , , , ,

6 Comentarios
» Feed RSS de los Comentarios

  1. Marcos dice:

    LoL!

    Con qué versión de flash player da el error, con la reciente actualización también? Esto es un bug como para solventarlo en la siguiente versión, menuda pifia!

    Gracias por el dato, ahora queda en la cabecita.. y cuando los TLF den por saco… seguro que recuerdo que algo oí en un blog lejano… que no tenía un check para suscribirse a los comentarios!!!! instalarlo yaaaa! XD (os pase el link por twitter 😉 )

  2. danii dice:

    Buenas Marcos! Te confirmo que el bug sigue sin solucionarse, aunque voy a editar la entrada dejar más claro en qué condiciones aparece (hay que intentar acceder a una propiedad o método del swf cargado).

    Por cierto, creo que ya vas a encontrar un check debajo de los comentarios que te alegrará, ya que nos has insitido tanto 😉

  3. Marcos dice:

    OH My God! That’s great!!!!

    Graaaaciaaaasss!!!

    Definitivamente me tendréis aquí viendo todo lo que se cuece en este blog, que a mi gusto ha empezado con una calidad impresionante!

  4. Buena tarde, kasi muero kuando veo eso de que no se podía publikar mi archivo … Lo que hice fue lo siguiente (en realidad no se que tan factible sea) ingrese a menu Archivo/Configuración de publicacíon/ en la pestaña Flash, en la sección script, seleccione el botón derecho que dice configuración, aki nos sale la libreria k anda dando lata, selekcionamos y en la parte inferior, cambiamos la opción que dice «Biblioteca compartida en tiempo de ejecución» x la de «Combinado en codigo» … aquí mi pregunta ¿Existe alguna complicación referente al tiempo de ejecución?

    Espero le sirva a alguien, saludos cordiales.

  5. Wale dice:

    Tengo una duda; trabajé una animación en CS5 con TLF y me ha dado tanto problema para visualizarlo en otros ordenadores, para poder ver el .exe debe llevar el archivo swf del TLF si no definitivamente no lo abre, y no me ha dejado convertirlo en .avi será que es por el TLF? gracias

  6. elad dice:

    Buenas Wale:
    Puede ser porque no este bien embebidas las fuentes y por eso los campos no se visualizan.

    Mírate algunos enlaces
    http://stackoverflow.com/questions/6096490/using-embedded-fonts-with-tlftextfield

    o cambia por campos dinámicos embebidos
    http://www.lostiemposcambian.com/blog/flash/embeber-caracteres-especiales-idiomas-en-flash/

    Recuerdo que los fullscreen (quizás lo tengas en el .exe) daban problemas con TLF en Flash. Aunque hace tiempo que no usamos ya actionscript 😛

    Espero que te sirva!

Enviar comentario