Hoewel ontwerpgereedschappen zoals Adobe Flex Builder en Flash Professional verschillende opties bieden voor tekstweergave, inclusief tekstgerelateerde componenten of tekstgereedschappen, is weergave via een tekstveld de eenvoudigste wijze om tekst via programmacode weer te geven.
Typen tekst
Het type tekst in een tekstveld wordt bepaald door de bron ervan:
-
Dynamische tekst
Dynamische tekst is inhoud die wordt geladen van een externe bron, zoals een tekstbestand, een XML-bestand of zelfs een externe webservice.
-
Invoertekst
Invoertekst is alle tekst die wordt ingevoerd door een gebruiker of dynamische tekst die een gebruiker kan bewerken. U kunt een opmaakmodel opzetten om invoertekst op te maken of u kunt de klasse flash.text.TextFormat gebruiken om eigenschappen toe te wijzen aan het tekstveld voor de invoerinhoud. Zie
Tekstinvoer vastleggen
voor meer informatie.
-
Statische tekst
Statische tekst wordt alleen via Flash Professional gemaakt. U kunt geen instantie van statische tekst maken met behulp van ActionScript 3.0. U kunt echter wel ActionScript-klassen als StaticText en TextSnapshot gebruiken om een bestaande instantie van statische tekst te manipuleren. Zie
Werken met statische tekst
voor meer informatie.
Inhoud van tekstvelden wijzigen
U kunt dynamische tekst definiëren door een string toe te wijzen aan de eigenschap
flash.text.TextField.text
. U wijst als volgt een tekenreeks direct toe aan de eigenschap:
myTextField.text = "Hello World";
U kunt ook aan de eigenschap
text
een waarde toewijzen uit een variabele die in uw script is gedefinieerd, zoals in het volgende voorbeeld:
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;
}
}
}
Als alternatief kunt u aan de eigenschap
text
een waarde toewijzen uit een externe variabele. U hebt drie opties voor het laden van tekstwaarden uit externe bronnen:
-
Met de klassen flash.net.URLLoader en flash.net.URLRequest laadt u variabelen voor de tekst vanuit een lokale of externe locatie.
-
Het kenmerk
FlashVars
is ingesloten in de HTML-pagina die als host dient voor het SWF-bestand en kan waarden bevatten voor tekstvariabelen.
-
Met de klasse flash.net.SharedObject beheert u de permanente opslag van waarden. Zie
Lokale gegevens opslaan
voor meer informatie.
HTML-tekst weergeven
De klasse flash.text.TextField heeft een eigenschap
htmlText
waarmee u uw tekstreeks kunt identificeren als een reeks die HTML-tags bevat voor het opmaken van de inhoud. Zoals te zien is in het volgende voorbeeld, moet u de tekenreekswaarde toewijzen aan de eigenschap
htmlText
(niet de eigenschap
text
) om Flash Player of AIR de tekst te laten weergeven als HTML:
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 en AIR ondersteunen een subset van de HTML-tags en -entiteiten voor de eigenschap
htmlText
. De eigenschapsbeschrijving
flash.text.TextField.htmlText
in de Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform biedt gedetailleerde informatie over de ondersteunde HTML-tags en -entiteiten.
Wanneer u de inhoud hebt aangegeven met de eigenschap
htmlText
, kunt u met stijlpagina's of de tag
textformat
de opmaak van de inhoud beheren. Zie
Tekst opmaken
voor meer informatie.
Afbeeldingen gebruiken in tekstvelden
Een ander voordeel van het weergeven van inhoud als HTML-tekst is dat u afbeeldingen in het tekstveld kunt opnemen. U kunt naar een lokale of externe afbeelding verwijzen met de tag
img
en de afbeelding laten verschijnen in het betreffende tekstveld.
In het volgende voorbeeld wordt een tekstveld met de naam
myTextBox
gemaakt en wordt in de weergegeven tekst een JPG-afbeelding van een oog opgenomen die in dezelfde map is opgeslagen als het SWF-bestand:
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;
}
}
}
De tag
img
ondersteunt JPEG-, GIF-, PNG- en SWF-bestanden.
Schuivende tekst in een tekstveld
In veel gevallen kan de tekst langer zijn dan het tekstveld waarin de tekst wordt weergegeven. Of u hebt misschien een invoerveld waarin gebruikers tekst kunnen invoeren die langer is dan in één keer kan worden weergegeven. U kunt met behulp van de aan schuiven gerelateerde eigenschappen van de klasse flash.text.TextField lange inhoud beheren, zowel verticaal als horizontaal.
De aan schuiven gerelateerde eigenschappen omvatten
TextField.scrollV
,
TextField.scrollH
en
maxScrollV
en
maxScrollH
. Gebruik deze eigenschappen om te reageren op gebeurtenissen, zoals een muisklik of een druk op een toets.
In het volgende voorbeeld wordt een tekstveld gemaakt dat een setgrootte is en meer tekst bevat dan het veld in één keer kan weergeven. Als de gebruiker op het tekstveld klikt, wordt de tekst verticaal geschoven.
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++;
}
}
}
|
|
|