2012-03-22 11 views
5

Me gustaría comenzar este muro de texto diciendo: "Soy muy nuevo en esto". Me puede estar perdiendo algo obvio.Fuentes incrustadas que no aparecen en actionscript campos de texto creados

Estoy trabajando en Flash CS5 con Actionscript 3. Estoy tratando de usar actionscript para crear un campo de texto, y rellenarlo con texto. He incrustado mi fuente en mi proyecto usando la ventana "Insertar fuente". Sin embargo, cuando se ejecuta el código para crear el campo de texto, si "embedFont = true;", la fuente es invisible. El cursor aún cambia cuando se mueve sobre él, así sé que está allí. O al menos su cuadro de texto es, supongo. Los campos de texto dinámicos con texto incrustado que ya están en el escenario no parecen verse afectados.

He intentado cambiar el formato de esquema de las fuentes incrustadas, ni funciona. He intentado incrustar directamente la fuente con la etiqueta "incrustar" a través de actionscript, pero parece que no funciona con CS5, o no sé lo que estoy haciendo. Como puede ver en el código provisto, intenté "registrar" la fuente, sin éxito. He intentado usar:

var font:Font = new screenfont(); //"screenfont" is the name from Embedding Fonts  

var format:TextFormat = new TextFormat(); 

format.font = screenfont.fontName; 

No dice.

He seguido algunos tutoriales diferentes acerca de la incrustación, y encuentro una gran cantidad de información conflictiva y confusa. He leído algunas publicaciones diferentes relacionadas con este tema, pero aún no he encontrado ninguna solución viable.

Aquí hay una versión sencilla de mi código, donde "ScreenFont" es el nombre que se especifica en la ventana de la incorporación de fuentes:

Font.registerFont(screenfont); 

      //TextFormat 
var listformat:TextFormat = new TextFormat(); 

listformat.align = TextFormatAlign.LEFT; 
listformat.size = 20.8; 
listformat.color = 0x0DAC54; 
listformat.font="Fixedsys Excelsior 3.01"; 


      //TextField 
var photolist:TextField = new TextField(); 
    photolist.x = photos_x; 
    photolist.y = tempY; 
    photolist.width = photos_wdth; 
    photolist.height = photos_hght; 
    photolist.text = photoname; 

    photolist.embedFonts = true; //<--- This freakin' guy! 

    photolist.antiAliasType = AntiAliasType.ADVANCED; 
    photolist.defaultTextFormat=listformat; 
    photolist.selectable = false; 
    photolist.wordWrap = true; 

    mediapage.photos.addChild(photolist); 

espero que esto proporciona una imagen clara.

Entonces, ¿cómo se logra la inserción en CS5?

+0

¿Ha declarado la fuente elegida en la biblioteca de su swf? Si es así, ¿ha seleccionado los glifos para incrustar también? – ToddBFisher

+0

Sí, y sí. También he comprobado 'exportar para actionscript' y 'exportar en el fotograma 1'. – TeaCake

+0

No hay nada de malo con el código. ¿Has intentado utilizar otra fuente? –

Respuesta

4

Debe establecer el texto como la última cosa que hace. Así que esta línea photolist.text = photoname; debería ser después de todo lo demás.

var photolist:TextField = new TextField(); 
photolist.x = photos_x; 
photolist.y = tempY; 
photolist.width = photos_wdth; 
photolist.height = photos_hght; 

photolist.embedFonts = true; 
photolist.antiAliasType = AntiAliasType.ADVANCED; 
photolist.defaultTextFormat=listformat; 
photolist.selectable = false; 
photolist.wordWrap = true; 
photolist.text = photoname;//<-- set text only after applying all formatting and embedding 

mediapage.photos.addChild(photolist); 
+1

¡Impresionante! Solo lo probé, y de hecho fue una gran parte del problema. Resulta que hubo una serie de factores que me arruinaron. Un ser que había comentado photolist.size = TextFieldAutoSize.LEFT. El otro y más grande problema (que tu sugerencia de probar distintas fuentes me ayudó a diagnosticar) fue que mis fuentes se dejaron configuradas en TLF después de mi experimentación anterior. Si no te molesta que pregunte, ¿cuáles son las configuraciones Classic y TLF? ¿Hay alguna razón por la que no puedo usar TLF? ¿Debería enojarme porque no puedo usar TLF? – TeaCake

Cuestiones relacionadas