Formatação de textoFlash Player 10 e posterior, Adobe AIR 1.5 e posterior Um objeto TextBlock é uma fábrica para criação de linhas de texto. O conteúdo de um TextBlock é designado pelo objeto TextElement. Um objeto ElementFormat manipula a formatação do texto. A classe ElementFormat define propriedades como alinhamento da linha de base, ajuste de espaço, tracking, rotação de texto, além de tamanho, cor e caixa de fonte. Também inclui uma FontDescription, abordada em detalhes em Trabalho com fontes. Uso do objeto ElementFormatO construtor do objeto ElementFormat adota qualquer item de uma lista longa de parâmetros opcionais, incluindo uma FontDescription. Também é possível definir essas propriedades fora do construtor. O exemplo a seguir mostra o relacionamento de vários objetos na definição e exibição de uma linha de texto simples. package { import flash.display.Sprite; import flash.text.*; public class ElementFormatExample extends Sprite { private var tb:TextBlock = new TextBlock(); private var te:TextElement; private var ef:ElementFormat; private var fd:FontDescription = new FontDescription(); private var str:String; private var tl:TextLine; public function ElementFormatExample() { fd.fontName = "Garamond"; ef = new ElementFormat(fd); ef.fontSize = 30; ef.color = 0xFF0000; str = "This is flash text"; te = new TextElement(str, ef); tb.content = te; tl = tb.createTextLine(null,600); addChild(tl); } } } Cor e transparência (alfa) da fonteA propriedade color do objeto ElementFormat define a cor da fonte. O valor é um inteiro que representa os componentes RGB da cor, por exemplo, 0xFF0000 para vermelho e 0x00FF00 para verde. O padrão é preto (0x000000). A propriedade alpha define o valor da transferência alfa para um elemento (TextElement e GraphicElement). Os valores podem variar de 0 (totalmente transparente) a 1 (totalmente opaco, que é a definição padrão). Elementos com alpha igual a 0 são invisíveis, porém ativos. Esse valor é multiplicado por quaisquer valores alfa herdados, tornando o elemento mais transparente. var ef:ElementFormat = new ElementFormat(); ef.alpha = 0.8; ef.color = 0x999999; Alinhamento e deslocamento de linha de baseA fonte e o tamanho do texto maior em uma linha determina sua linha de base dominante. É possível substituir esses valores definindo TextBlock.baselineFontDescription e TextBlock.baselineFontSize. É possível alinhar a linha de base dominante com uma das diversas linhas de base dentro do texto. Essas linhas de base incluem as linhas ascendente e descendente ou as partes superior, inferior e central do ideograma. ![]()
No objeto ElementFormat, três propriedades determinam as características da linha de base e do alinhamento. A propriedade alignmentBaseline define a linha de base principal de um TextElement ou GraphicElement. Essa linha de base é a linha "de encaixe" do elemento, e a base de linha dominante de todo o texto se alinha em relação à sua posição. A propriedade dominantBaseline especifica quais linhas de base do elemento usar, o que determina a posição vertical do elemento na linha. O valor padrão é TextBaseline.ROMAN, mas também pode ser definido de modo que IDEOGRAPHIC_TOP ou IDEOGRAPHIC_BOTTOM seja a linha de base dominante. A propriedade baselineShift move a linha de base por um número de pixels definidos no eixo y. No texto normal (não girado), um valor positivo move a linha de base para baixo e um valor negativo, para cima. Caixa tipográficaA propriedade TypographicCase de ElementFormat especifica a caixa de texto como maiúscula, minúscula ou versalete. var ef_Upper:ElementFormat = new ElementFormat(); ef_Upper.typographicCase = TypographicCase.UPPERCASE; var ef_SmallCaps:ElementFormat = new ElementFormat(); ef_SmallCaps.typographicCase = TypographicCase.SMALL_CAPS; Giro de textoÉ possível girar um bloco de texto ou os glifos dentro de um segmento de texto em incrementos de 90°. A classe TextRotation define as seguintes constantes para definir o giro de bloco de texto e glifo:
Para girar as linhas de texto em um bloco de texto, defina a propriedade TextBlock.lineRotation antes de chamar o método TextBlock.createTextLine() para criar a linha de texto. Para girar os glifos em um bloco de texto ou segmento, defina a propriedade ElementFormat.textRotation como o número de graus que o glifo deve ser girado. Um glifo é a forma que compõe um caractere ou uma parte de um caractere composto de vários glifos. A letra "a" e o ponto em um "i", por exemplo, são glifos. O giro dos glifos é importante em alguns idiomas asiáticos em qual se quer girar as linhas para vertical, sem girar os caracteres dentro das linhas. Para obter mais informações sobre o giro de texto asiático, consulte Justificação de texto do leste asiático. Este é um exemplo de giro de um bloco de texto e dos glifos internos, que pode ser aplicativo a um texto asiático. O exemplo também usa uma fonte japonesa: package { import flash.display.Sprite; import flash.text.*; public class RotationExample extends Sprite { private var tb:TextBlock = new TextBlock(); private var te:TextElement; private var ef:ElementFormat; private var fd:FontDescription = new FontDescription(); private var str:String; private var tl:TextLine; public function RotationExample() { fd.fontName = "MS Mincho"; ef = new ElementFormat(fd); ef.textRotation = TextRotation.AUTO; str = "This is rotated Japanese text"; te = new TextElement(str, ef); tb.lineRotation = TextRotation.ROTATE_90; tb.content = te; tl = tb.createTextLine(null,600); addChild(tl); } } } Bloqueio e clonagem de ElementFormatQuando um objeto ElementFormat for atribuído a qualquer tipo de ContentElement, sua propriedade locked será automaticamente definida como true. A tentativa para modificar um objeto ElementFormat bloqueado emite um IllegalOperationError. A prática recomendada é definir completamente tal objeto antes de atribuí-lo a uma instância do TextElement. Para modificar uma instância do ElementFormat existente, primeiro verifique sua propriedade locked. Se estiver definida como true, use o métodoclone() para criar uma cópia desbloqueada do objeto. As propriedades desse objeto desbloqueado podem ser alteradas e é possível atribuí-lo à instância do TextElement. Quaisquer linhas criadas a partir de então terão a nova formatação. As linhas desse mesmo objeto criadas anteriormente, e usando o formato antigo, permanecerão inalteradas. package { import flash.display.Sprite; import flash.text.*; public class ElementFormatCloneExample extends Sprite { private var tb:TextBlock = new TextBlock(); private var te:TextElement; private var ef1:ElementFormat; private var ef2:ElementFormat; private var fd:FontDescription = new FontDescription(); public function ElementFormatCloneExample() { fd.fontName = "Garamond"; ef1 = new ElementFormat(fd); ef1.fontSize = 24; var str:String = "This is flash text"; te = new TextElement(str, ef); tb.content = te; var tx1:TextLine = tb.createTextLine(null,600); addChild(tx1); ef2 = (ef1.locked) ? ef1.clone() : ef1; ef2.fontSize = 32; tb.content.elementFormat = ef2; var tx2:TextLine = tb.createTextLine(null,600); addChild(tx2); } } } |
![]() |