2011-10-31 11 views
5

Estoy tratando de averiguar por qué algunas letras (como el noruego (Å)) se cutted a cabo en el centro de la parte superior "o" campo de texto:AS3 configuración del margen superior de texto, ya que algunos caracteres se cutted a cabo

Mi código es la siguiente:

 var titleFormat:TextFormat = new TextFormat(); 
     titleFormat.size = textSize; 
      // this is embedded font, and exported for action script, declared 
     titleFormat.font = myFontBold.fontName; 
     titleFormat.bold = true; 
     titleFormat.color = parseInt("0x"+fontColor,16); 

     var titleText:TextField = new TextField(); 
     titleText.defaultTextFormat = titleFormat; 
     titleText.embedFonts = true;    
     titleText.antiAliasType = AntiAliasType.ADVANCED; 
     titleText.text = "Å"+text; 
     addChild(titleText); 

     titleText.selectable = false;   
     titleText.wordWrap = true;   
     titleText.width = maskImg.width - 80;   
      // this should autosize to fit all text, but it doesn't the top of text 
     titleText.autoSize = TextFieldAutoSize.LEFT; 
     titleText.x = x; 
     titleText.y = y; 

Por lo tanto, he intentado cosas diferentes, como el establecimiento de altura hardcoded y más grande que el texto, pero arriba nos CUTTED de nuevo, he intentado con CSS, pero sin éxito. Alguien tiene idea de por qué la carta no se mostró totalmente y por qué si i zoom en el archivo SWF (2-3 ins zoom) que aparece normal (y lo que intento lograr) así:

I Creo que tiene que ver con el topMargin, pero desafortunadamente no encontré algo así en la documentación as3.

+0

En los estilos Flex, hay 'paddingTop', pero tiene TextField puro. Esto puede ser un error de medición de texto: la letra sale de la caja. Puede intentar renderizar texto en mapa de bits y mostrar el mapa de bits (también se puede cortar, pero tal vez haya una combinación de escala de matriz/tamaño de fuente que lo evite). – alxx

+0

Sí, lo he intentado también, pero como lo dijo también en caché el mapa de bits sin la parte superior. Creo que este es probablemente un error que debe corregirse en futuras versiones de Flash, o agregar un nuevo margen (ahora es sólo el Margen izquierdo y el Margen derecho, probablemente esto necesita topMargin y bottomMargin, para que podamos arreglar estas cosas configurando el texto más adentro) – Daniel

Respuesta

1

No estoy seguro si esto ayuda, pero probé el siguiente código completo e independiente con la fuente Verdana, no incrustado y funciona bien. Tal vez la fuente que está incrustando tiene un problema en sí mismo, o la incrustación está causando un problema por alguna razón.

package { 

    import flash.display.MovieClip; 
    import flash.text.*; 

    public class TestText extends MovieClip { 

     public function TestText() { 

      var textSize = 20; 

      var titleFormat:TextFormat = new TextFormat(); 
      titleFormat.size = textSize; 
      titleFormat.font = "Verdana"; 
      titleFormat.color = 0xFF0000; 

      var titleText:TextField = new TextField(); 
      titleText.defaultTextFormat = titleFormat;   
      titleText.text = "Åbcdefg"; 
      titleText.backgroundColor = 0x000000; 
      titleText.background = true; 
      addChild(titleText); 

      titleText.autoSize = TextFieldAutoSize.LEFT; 
      titleText.selectable = false;   
      titleText.wordWrap = true;   
      titleText.width = 200;  

     } 
    } 
} 
+0

Cambiarlo a Verdana funcionó, por lo que es probablemente la fuente que sugirió. Pero luego, noté que cuando no estaba usando incrustación, la "o" no se veía en absoluto en esa fuente, y al insertarla, se muestra por la mitad (ver la primera imagen). Entonces, creo que la fuente es la causa de esto, pero el flash debería tener una forma de manejar este tipo de fuentes, o al menos una forma de arreglarlo con topMargin y bottomMargin. – Daniel

Cuestiones relacionadas