Arbeta med statisk text

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Statisk text skapas endast i Flash Professional. Du kan inte programmässigt instansiera statisk text med ActionScript. Statisk text kan användas när texten är kort och texten inte är avsedd att ändras (som dynamisk text kan). Du kan tänka dig statisk text ungefär som ett grafikelement, till exempel en cirkel eller fyrkant, som ritas på scenen i Flash Professional. Trots att statisk text är mer begränsad än dynamisk text, kan du läsa egenskapsvärden för statisk text med klassen StaticText i ActionScript 3.0. Du kan även använda klassen TextSnapshot när du vill läsa värden från den statiska texten.

Öppna statiska textfält med klassen StaticText

I vanliga fall använder du klassen flash.text.StaticText på åtgärdspanelen i Flash Professional när du ska arbeta med en statisk textinstans på scenen. Du kan även arbeta i ActionScript-filer som interagerar med en SWF-fil som innehåller statisk text. Oavsett vilket du använder, kan du inte instansiera en statisk textinstans programmässigt. Statisk text skapas i Flash Professional.

Gå igenom objekten i visningslistan och tilldela en variabel när du vill skapa en referens för ett befintligt statiskt textfält. Till exempel:

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

När du har en referens till ett statiskt textfält kan du använda egenskaperna för det fältet i ActionScript 3.0. Koden nedan är kopplad till en bildruta på tidslinjen och förutsätter att en variabel kallad myFieldLabel har tilldelats en statisk textreferens. Ett dynamiskt textfält kallat myField är positionerat i förhållande till x- och y-värdena för myFieldLabel och visar värdet för myFieldLabel igen.

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

Använda klassen TextSnapshot

Om du programmässigt vill arbeta med en befintlig statisk textinstans, kan du använda klassen flash.text.TextSnapshot och arbeta med egenskapen textSnapshot för en flash.display.DisplayObjectContainer. Du skapar med andra ord en TextSnapshot-instans av egenskapen DisplayObjectContainer.textSnapshot. Du kan sedan tillämpa metoder på instansen när du vill hämta värden eller markera delar av den statiska texten.

Du kan t.ex. placera ett statiskt textfält som innehåller texten ”TextSnapshot Example” på scenen. Lägg till följande ActionScript till bildruta 1 på tidslinjen:

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); 

Klassen TextSnapshot är praktisk när du vill hämta text från statiska textfält i en inläst SWF-fil och använda texten som ett värde i en annan del av ett program.