Utvecklingsverktyg som Adobe Flash Builder och Flash Professional har flera alternativ för textvisning, inklusive textrelaterade komponenter och textverktyg, men det enklaste sättet att programmässigt visa text är via ett textfält.
Typer av text
Typen av text i ett textfält karakteriseras av sin källa:
-
Dynamisk text
Dynamisk text inkluderar innehåll som läses in från en extern källa, t.ex. en textfil, en XML-fil eller en webbtjänst.
-
Inmatningstext
Inmatningstext är text som användaren skriver eller dynamisk text som användaren kan redigera. Du kan ange en formatmall för att formatera inmatningstexten eller använda klassen flash.text.TextFormat om du vill tilldela egenskaper för det inmatade innehållet i textfältet. Mer information finns i
Hämta textinmatningar
.
-
Statisk text
Statisk text skapas endast i Flash Professional. Du kan inte skapa en statisk textinstans med ActionScript 3.0, men du kan använda ActionScript-klasser som StaticText och TextSnapshot när du vill ändra en statisk textinstans. Mer information finns i
Arbeta med statisk text
.
Ändra innehåll i textfält
Du kan definiera dynamisk text genom att tilldela en sträng till egenskapen
flash.text.TextField.text
. Du kan tilldela en sträng direkt till egenskapen på följande sätt:
myTextField.text = "Hello World";
Du kan även tilldela
text
-egenskapen ett värde från en variabel som definierats i ditt skript, som i exemplet nedan:
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;
}
}
}
Alternativt kan du tilldela
text
-egenskapen ett värde från en fjärrvariabel. Det finns tre alternativ för att läsa in textvärden från fjärrkällor:
-
Klasserna flash.net.URLLoader och flash.net.URLRequest läser in variabler för texten från en lokal plats eller fjärrplats.
-
Attributet
FlashVars
är inbäddat i HTML-sidan som är värd för SWF-filen och det kan innehålla värden för textvariabler.
-
Klassen flash.net.SharedObject hanterar upprepad lagring av värden. Mer information finns i
Lagra lokala data
.
Visa HTML-text
Med klassen flash.text.TextField kan du använda egenskapen
htmlText
när du vill identifiera textsträngen som en sträng som innehåller HTML-taggar för formatering av innehåll. Du måste tilldela strängvärdet till egenskapen
htmlText
(inte
text
-egenskapen) för Flash Player eller AIR om du vill visa text som HTML, så som i exemplet nedan:
var myText:String = "<p>This is <b>some</b> content to <i>render</i> as <u>HTML</u> text.</p>";
myTextBox.htmlText = myText;
Flash Player och AIR har stöd för en delmängd HTML-taggar och entiteter för egenskapen
htmlText
. Egenskapsbeskrivningen för
flash.text.TextField.htmlText
i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen innehåller detaljerad information om de HTML-taggar och entiteter som stöds.
När du anger innehåll med egenskapen
htmlText
kan du använda formatmallar eller taggen
textformat
när du vill formatera innehållet. Mer information finns i
Formatera text
.
Använda bilder i textfält
En annan fördel med att visa innehållet som HTML-text är att du kan inkludera bilder i textfältet. Du kan skapa en referens till en lokal bild eller en fjärrbild med taggen
img
och visa den i det tillhörande textfältet.
Exemplet nedan skapar ett textfält kallat
myTextBox
som inkluderar en JPG-bild av ett öga som lagras i samma katalog som SWF-filen i texten som visas:
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;
}
}
}
Taggen
img
har stöd för JPEG-, GIF-, PNG- och SWF-filer.
Rulla text i ett textfält
I många fall kan din text vara längre än textfältet som visar texten. Eller du kan ha ett inmatningsfält där användaren kan skriva mer text än det som kan visas samtidigt. Du kan använda rullningsegenskaperna i klassen flash.text.TextField när du vill hantera långt innehåll, antingen lodrätt eller vågrätt.
Rullningsegenskaperna inkluderar
TextField.scrollV
,
TextField.scrollH
och
maxScrollV
samt
maxScrollH
. Använd egenskaperna när du vill svara på händelser, t.ex. ett musklick eller en tangenttryckning.
Exemplet nedan skapar ett textfält med en fast inställd storlek som innehåller mer text än fältet kan visa. Texten rullar lodrätt när användaren klickar på textfältet.
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++;
}
}
}
|
|
|