Exibição de texto

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

Embora as ferramentas de autoria como o Adobe Flash Builder e o Flash Professional apresentem várias opções de exibição de texto, incluindo componentes relacionados a texto ou ferramentas de texto, o modo mais simples de exibir texto de modo programático é por meio de um campo de texto.

Tipos de texto

O tipo de texto dentro de um campo é caracterizado por sua fonte:

  • Texto dinâmico

    O texto dinâmico inclui conteúdo carregado de uma fonte externa, por exemplo, um arquivo de texto, um arquivo XML ou mesmo um serviço da Web remoto.

  • Texto de entrada

    Texto de entrada é qualquer texto inserido por um usuário ou texto dinâmico que um usuário possa editar. É possível configurar uma folha de estilos para formatar texto de entrada ou usar a classe flash.text.TextFormat para atribuir propriedades ao campo de texto do conteúdo de entrada. Para obter mais informações, consulte Captura de entrada de texto .

  • Texto estático

    O texto estático é criado apenas através do Flash Professional. Não é possível criar uma instância de texto estático usando o ActionScript 3.0. No entanto, é possível usar classes ActionScript como StaticText e TextSnapshot para manipular uma instância de texto estática. Para obter mais informações, consulte Trabalho com texto estático

Modificação de conteúdos de campo de texto

Você pode definir texto dinâmico atribuindo uma sequência de caracteres à propriedade flash.text.TextField.text . Você designa uma sequência de caracteres diretamente à propriedade, como segue:

myTextField.text = "Hello World";

Também é possível designar à propriedade text um valor de uma variável definida no script, como no exemplo a seguir:

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class TextWithImage extends Sprite 
    { 
        private var myTextBox:TextField = new TextField(); 
        private var myText:String = "Hello World"; 
 
        public function TextWithImage() 
        { 
            addChild(myTextBox); 
            myTextBox.text = myText; 
        } 
    } 
}

Como alternativa, você pode designar à propriedade text um valor de uma variável remota. Você tem três opções para carregar valores de texto de fontes remotas:

  • As classes flash.net.URLLoader e flash.net.URLRequest carregam as variáveis do texto da posição local para uma remota.

  • O atributo FlashVars está incorporado na página HTML que hospeda o arquivo SWF e pode conter valores das variáveis de texto.

  • A classe flash.net.SharedObject gerencia armazenamento persistente de valores. Para obter mais informações, consulte Armazenamento de dados locais .

Exibição de texto HTML

A classe flash.text.TextField tem uma propriedade htmlText que pode ser usada para identificar a sequência de texto à medida que ela contém tags HTML para formatação de conteúdo. Como no exemplo a seguir, atribua um valor de sequência de caracteres à propriedade htmlText (não à propriedade text ) do Flash Player ou AIR para renderizar o texto como HTML:

var myText:String = "<p>This is <b>some</b> content to <i>render</i> as <u>HTML</u> text.</p>"; 
myTextBox.htmlText = myText;

O Flash Player e o AIR dão suporte a um subconjunto de tags HTML e às entidades da propriedade htmlText . A descrição da propriedade flash.text.TextField.htmlText na Referência do ActionScript 3.0 apresenta informações detalhadas sobre as tags e entidades HTML com suporte.

Assim que projetar o conteúdo usando a propriedade htmlText , você poderá usar as folhas de estilos ou a tag textformat para gerenciar a formatação do conteúdo. Para obter mais informações, consulte Formatação de texto .

Uso de imagens em campos de texto

Outra vantagem de exibir o conteúdo como texto HTML é a inclusão de imagens no campo de texto. É possível fazer referência a uma imagem, local ou remota, usando a tag img e fazer com que ela apareça dentro do campo de texto associado.

O exemplo a seguir cria um campo de texto denominado myTextBox e inclui a imagem JPG de um olho, armazenada no mesmo diretório que o arquivo SWF, dentro do texto exibido:

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class TextWithImage extends Sprite 
    { 
        private var myTextBox:TextField; 
        private var myText:String = "<p>This is <b>some</b> content to <i>test</i> and <i>see</i></p><p><img src='eye.jpg' width='20' height='20'></p><p>what can be rendered.</p><p>You should see an eye image and some <u>HTML</u> text.</p>"; 
 
        public function TextWithImage() 
        { 
            myTextBox.width = 200; 
            myTextBox.height = 200; 
            myTextBox.multiline = true; 
            myTextBox.wordWrap = true; 
            myTextBox.border = true; 
 
            addChild(myTextBox); 
            myTextBox.htmlText = myText; 
        } 
    } 
}

A tag img suporta arquivos JPEG, GIF, PNG e SWF.

Rolagem de texto em um campo de texto

É possível que, em muitos casos, o texto seja maior que o campo de exibição. Ou talvez um campo de entrada permita que um usuário insira mais texto do que possa ser exibido de uma única vez. Nesses casos, use as propriedades da classe flash.text.TextField relativas à rolagem para gerenciar conteúdos extensos, quer na vertical quanto na horizontal.

Essas propriedades incluem TextField.scrollV , TextField.scrollH , maxScrollV e maxScrollH . Use essas propriedades para responder a eventos, como um clique de mouse ou um pressionamento de tecla.

O exemplo a seguir cria um campo de texto que é um tamanho definido e contém mais texto do que o campo pode exibir de uma única vez. O texto rola verticalmente à medida que o usuário clica no campo de texto.

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
    import flash.events.MouseEvent; 
 
    public class TextScrollExample extends Sprite 
    { 
        private var myTextBox:TextField = new TextField(); 
        private var myText:String = "Hello world and welcome to the show. It's really nice to meet you. Take your coat off and stay a while. OK, show is over. Hope you had fun. You can go home now. Don't forget to tip your waiter. There are mints in the bowl by the door. Thank you. Please come again."; 
 
        public function TextScrollExample() 
        { 
            myTextBox.text = myText; 
            myTextBox.width = 200; 
            myTextBox.height = 50; 
            myTextBox.multiline = true; 
            myTextBox.wordWrap = true; 
            myTextBox.background = true; 
            myTextBox.border = true; 
 
            var format:TextFormat = new TextFormat(); 
            format.font = "Verdana"; 
            format.color = 0xFF0000; 
            format.size = 10; 
 
            myTextBox.defaultTextFormat = format; 
            addChild(myTextBox); 
            myTextBox.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownScroll); 
        } 
 
        public function mouseDownScroll(event:MouseEvent):void 
        { 
            myTextBox.scrollV++; 
        } 
    } 
}