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++;
}
}
}
|
|
|