2011-10-31 7 views
5

Sto cercando di capire perché alcune lettere (come il norvegese (Å)) sono tagliati fuori nel mezzo della parte superiore "o" TextField:AS3 impostazione margine superiore di testo perché alcuni caratteri vengono tagliati fuori

il mio codice è questo:

 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; 

Così, ho provato cose diverse, come l'impostazione hardcoded altezza e più grande di testo, ma all'inizio ci ha tagliato ancora una volta, ho provato con i CSS, ma senza successo. Qualcuno ha idea del perché la lettera non viene mostrato completamente e perché se i zoom nel file SWF (2-3 ins zoom) si presenta normale (e quello che cerco di raggiungere) in questo modo:

I penso che abbia a che fare con il topMargin, ma sfortunatamente non ho trovato qualcosa di simile nella documentazione di as3.

+0

Negli stili Flex c'è 'paddingTop', ma si dispone di puro TextField. Questo può essere un bug che misura il testo - la lettera va fuori dalla scatola. Potresti provare a renderizzare il testo in bitmap e mostrare la bitmap (può anche essere tagliato, ma forse c'è una combinazione di dimensioni in scala/font che lo evita.) – alxx

+0

Sì, ho provato anche quello, ma come hai detto anche in cache la bitmap senza la parte superiore. Penso che questo sia probabilmente un bug che deve essere corretto in alcune future versioni flash, o aggiungere un nuovo margine (ora è solo leftMargin e rightMargin, probabilmente questo ha bisogno di topMargin e bottomMargin, così che siamo in grado di sistemare queste cose impostando il testo più all'interno) – Daniel

risposta

1

Non sono sicuro se questo aiuta, ma ho testato il seguente codice completo, autonomo con il font Verdana, non incorporato e funziona bene. Forse il carattere che stai incorporando ha un problema in sé, o l'incorporamento sta causando un problema per qualche motivo?

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

Cambiato in Verdana ha funzionato, quindi è probabilmente il tipo di carattere come suggerito. Ma poi, ho notato che non usando l'incorporamento, la "o" non è affatto visibile su quel font, e incorporandola mostra a metà (vedi la prima immagine). Quindi, penso che il font sia la causa di questo, ma Flash dovrebbe avere un modo per gestire questo tipo di font, o almeno un modo per risolverlo con topMargin e bottomMargin. – Daniel