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.
|
|
|