2009-11-16 17 views
5

Espero que este sea un problema nuevo o que me falta algo obvio. ¡Por favor ayuda! Estoy incrustando una fuente en mi aplicación AS3. Estoy haciendo todo por el libro y funciona a medias.Incrustar fuentes en AS3 - El campo de texto dinámico desaparece

En mi clase principal,

[Embed(source="Art/moolbor.ttf", fontFamily="MoolEmbed", 
     mimeType="application/x-font")] 
    var MoolEmbed:Class; 

Luego, más tarde en mi código:

var newFormat:TextFormat = new TextFormat(); 
    newFormat.font = "MoolEmbed"; 
    newFormat.size = 20; 
    newFormat.color = 0xFCF374; 

    year.autoSize = TextFieldAutoSize.LEFT; 
    year.text = "Hello World"; 
    year.embedFonts = true; 
    year.setTextFormat(newFormat); 
    year.antiAliasType = "advanced"; 

Esto funciona perfectamente bien, y el texto aparece muy bien. Puedo rotarlo, alphas se aplican a él, y está bien antialiased. El problema es que el campo de texto es dinámico - Más adelante en el código:

year.text = "And a second hello world"; 

Tan pronto como el código se activa, el campo de texto desaparece por completo. Enciendo

year.border = true; 

y puedo ver que el campo de texto está todavía allí, pero es de tamaño se ha reducido hasta sólo unos pocos píxeles. Pensando tal vez fue el autoSize ensuciar las cosas,

//year.autoSize = ...; 

mismos problemas. Pensando que podría ser la incrustación, comenté la línea:

//year.embedFonts = true; 

Y el campo de texto vuelve al estado de trabajo, pero (comprensible) pierde su capacidad de hacer alfas y rotaciones.

Alguna idea de lo que está pasando?

Respuesta

13

Escribí una larga entrada comunicativa sobre posibles razones por las que esto no funcionaría. Pero cuando volví a leer tu código creo que vi el error. Cambiar la fila:

year.setTextFormat(newFormat); 

Para:

year.defaultTextFormat = newFormat; 

Eso debería hacerlo!

+0

¡Muchas gracias! Nunca usé la propiedad defaultTextFormat antes ... ¡Aprenda algo nuevo todos los días! –

+1

Tengo más o menos el mismo problema, esta solución todavía no funciona para mí. Fonts.enamurate muestra mi fuente incrustada. –

+0

gracias, me salvó mucho trabajo. Sin embargo, en mi caso tuve que agregar en lugar de cambio. – Frank

0

necesita registrar su fuente con la lista global de fuentes.

importación:

import flash.text.Font; 

en su constructor:

Font.registerFont(MoolEmbed) 
+0

no dice; el comportamiento no cambia : C –

0

Después de establecer la propiedad de texto por segunda vez asegúrese de llamar setTextFormat (newFormat) de nuevo.

3

como defaultTextFormat no funcionó para, una combinación de los otros dos puntas trabajaron

import flash.text.Font; 

en su constructor:

Font.registerFont(MoolEmbed) 

y luego

Después de establecer la propiedad de texto para el Por segunda vez, asegúrese de llamar a setTextFormat (newFormat) nuevamente.

Cuestiones relacionadas