Trabalho com texto estático

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

O texto estático só é criado no Flash Professional. Não é possível instanciar programaticamente texto estático usando ActionScript. O texto estático é útil quando o texto é pequeno e não pode ser alterado (como o texto dinâmico pode). Pense no texto estático como a um elemento gráfico (por exemplo, um círculo ou quadrado) desenhado no Palco, no Flash Professional. Embora o texto estático seja mais limitado que o texto dinâmico, o ActionScript 3.0 permite que você leia os valores da propriedade do texto estático usando a classe StaticText. É possível também usar a classe TextSnapshot para ler outros tipos de valores além do texto estático.

Acesso aos campos de texto estático com a classe StaticText

Normalmente, é possível usar a classe flash.text.StaticText no painel Ações do Flash Professional para interagir com uma instância de texto estática posicionada no Palco. Também é possível trabalhar nos arquivos do ActionScript que interagem com um arquivo SWF que contém texto estático. Em qualquer caso, é possível instanciar uma instância de texto estático de modo programático. O texto estático é criado no Flash Professional.

Para criar uma referência a um campo de texto estático existente, faça uma iteração nos itens na lista de exibição e atribua um variável. Por exemplo:

for (var i = 0; i < this.numChildren; i++) { 
var displayitem:DisplayObject = this.getChildAt(i); 
if (displayitem instanceof StaticText) { 
trace("a static text field is item " + i + " on the display list"); 
        var myFieldLabel:StaticText = StaticText(displayitem); 
        trace("and contains the text: " + myFieldLabel.text); 
} 
}

Depois de fazer referência a um campo de texto estático, é possível usar as propriedades desse campo no ActionScript 3.0. O código a seguir está anexado a um quadro na Linha de tempo e parte da premissa de que uma variável denominada myFieldLabel foi atribuída a uma referência a texto estático. Um campo de texto dinâmico, denominado myField , está posicionado em relação aos valores x e y de myFieldLabel e exibe o valor de myFieldLabel novamente.

var myField:TextField = new TextField(); 
addChild(myField); 
myField.x = myFieldLabel.x; 
myField.y = myFieldLabel.y + 20; 
myField.autoSize = TextFieldAutoSize.LEFT; 
myField.text = "and " + myFieldLabel.text

Uso da classe TextSnapshot

Se desejar trabalhar programaticamente com uma instância de texto estática existente, poderá usar a classe flash.text.TextSnapshot para trabalhar com a propriedade textSnapshot de um flash.display.DisplayObjectContainer. Em outras palavras, você cria uma instância do TextSnapshot da propriedade DisplayObjectContainer.textSnapshot É possível aplicar métodos a essa instância para recuperar valores ou selecionar partes do texto estático.

Por exemplo, coloque um campo de texto estático que contém o texto "Exemplo de TextSnapshot" no Palco. Adicione o ActionScript a seguir ao Quadro 1 da Linha de tempo:

var mySnap:TextSnapshot = this.textSnapshot; 
var count:Number = mySnap.charCount; 
mySnap.setSelected(0, 4, true);  
mySnap.setSelected(1, 2, false);  
var myText:String = mySnap.getSelectedText(false);  
trace(myText); 

A classe TextSnapshot será útil para obter texto dentre os campos de texto estático em um arquivo SWF carregado, caso você queira usar o texto como um valor em outra parte de um aplicativo.