Kom igång med Text Layout Framework PDF Skriv ut Skicka sidan
2011-09-01 09:18

Jag har under en tid arbetat med Text Layout Framework (TLF) i några projekt. Troligen är detta något jag kommer att fortsätta att jobba med, åtminstone i de något större projekten. TLF bygger på den nya textmotorn i Flash Player 10, Flash Text Engine (FTE) och är enormt mångsidigt och har därför också många inställningsmöjligheter. Långt många fler inställningar än TextField, vilket också gör det svårare att använda.

Jag kodar mina fält, använder du Flash till att skapa fält i designläge så är det ett helt annat tillvägagångssätt, dock mycket enklare - så länge du inte behöver komma åt dina textfält senare genom kod. Eller än värre, komma åt dina textfält senare genom kod i en ovanliggande swf (mer om det en annan gång kanske).

Ett argument varför du ska använda TLF är för att det kan hantera höger-till-vänster (RTL) språk (arabiska, farsi och hebreiska), det kan du inte göra på traditionellt vis. Texter som visas i RTL med TextField förvränger meningsbilden och skiljetecken hamnar på höger sida, vilket gör det helt oläsbart såklart. Ett annat argument är att med TLF kan du få text att flöda precis som i en tidningsartikel, runt bilder, genom flera kolumner och du kan till och med skriva vertikalt med full flödeshantering. Med TLF har du full kontroll på ditt textflöde.

Glöm inte textLayout.swc!

Jobbar du i Flash behöver du inte importera något. Vad gäller Builder och FDT vet jag inte, men antagligen funkar det där per automatik också. I FlashDevelop måste du länka in textLayout.swc som du kan hitta i Flex SDK i: /frameworks/libs. Att tänka på är att du ska ta den från den senaste släppta SDK, jag gjorde misstaget att ta den från Flex SDK 3.5 och fick inget att fungera. Det var för att TLF 2.1 distribuerades med senare Flex SDK och den jag hade i SDK 3.5 antagligen hade version 1.0.

Dålig dokumentation 

Dokumentationen på Adobes sajt är väldigt bristfällig. Om man har tillgång till auto complete i sitt IDE så är alla objekt typade med *, vilket innebär att man måste in på hjälpsidorna på nätet för att se vad man ska mata objekten med för värden. Väl där får man inga exempel på hur man använder objektet. Det finns generella och övergripande exempel, men de räcker inte så långt. Google is your friend!

Jag har en hat-/kärleksrelation till TLF, men det positiva tar överhand och jag kan inte annat än rekommendera fler att börja använda det. Låt oss bara hoppas att Adobe tar tag i dokumentationen och gör den bättre, det hade hjälpt många att komma igång.

Ett bra ställe att börja på är:

http://help.adobe.com/.../elements/TextFlow.html som beskriver klassen TextFlow som hanterar allt textflöde i en uppsättning flödeselement.

Här är ett enkelt exempel på hur man skapar en text med TLF.

import flash.display.Sprite;
import flashx.textLayout.container.ContainerController;
import flashx.textLayout.elements.ParagraphElement;
import flashx.textLayout.elements.SpanElement;
import flashx.textLayout.elements.TextFlow;
import flashx.textLayout.formats.TextAlign;
import flashx.textLayout.formats.TextLayoutFormat;

// skapa ett generellt formateringsobjekt för ditt textflöde
var tFormat:TextLayoutFormat = new TextLayoutFormat();
tFormat.fontFamily = "Arial, Helvetica, _sans";
tFormat.color = 0xCC0000;
tFormat.fontSize = 14;
tFormat.textAlign = TextAlign.LEFT;

// skapa textflödet
var textFlow:TextFlow = new TextFlow();
// koppla samman textflöde och formateringsobjektet
textFlow.hostFormat = tFormat;

// skapa första paragrafen i textflödet, du kan skapa så många du vill
var paragraph:ParagraphElement = new ParagraphElement();
// lägg till paragrafen i textflödet
textFlow.addChild(paragraph);

// skapa ett textobjekt
var text:SpanElement = new SpanElement();
text.text = "Jag vill bada nu.";
// lägg till textobjektet i paragrafen
// du kan lägga till hur många flödesobjekt 
// (SpanElement, InlineGraphicElement, LinkElement, osv)
// som helst i paragrafen, dock inte andra paragrafer
paragraph.addChild(text);

// skapa ett display object som behållare för textflödet
var textWrapper:Sprite = new Sprite();
addChild(textWrapper);
// positionera behållaren
textWrapper.x = textWrapper.y = 50;

// skapa en ContainerController och koppla samman behållaren med textflödet
// du kan skapa flera kontrollobjekt i ett och samma flöde, 
// får inte flödesobjekten plats i det första fortsätter de i nästa
var textController:ContainerController = new ContainerController(textWrapper, 200, 25);
// lägg till kontrollobjektet i IFlowComposer-instansen
textFlow.flowComposer.addController(textController);
// uppdatera kontrollobjekten – det är det här som visar texten.
textFlow.flowComposer.updateAllControllers();

Bedöm artikeln:
Skapad 2011-09-01 09:18 av Patric Jonsson

Visad 464 gånger än så länge.

Senaste artiklarna av Patric Jonsson


Senast uppdaterad 2011-09-06 09:02

Lägg till kommentar


Medlemmar


Members Online: 0

Senaste registrerade

LisaRaichand : 22 april 2012 19:55pilu : 31 januari 2012 09:58Gostship99 : 07 januari 2012 19:37Director : 18 november 2011 05:44Dahlback : 17 november 2011 16:28mikwonwheels : 14 november 2011 13:20Kviddis : 04 oktober 2011 19:53buddha1966 : 25 september 2011 14:22idesign : 20 september 2011 08:45TxT : 05 september 2011 11:07ApelG : 05 september 2011 11:04
Partners
Adobe user group
fdt5-logo
TechSmith
Lynda user group
Apress user group
O´reilly user group
Peachpit user group
Friends Of Ed
Manning user group


Senaste blogginläggen

Av: Danel
-20.02.2012
Av: Patric Jonsson
-27.01.2012
Av: Patric Jonsson
- 3.01.2012
Av: Patric Jonsson
-29.11.2011
Av: Danel
-26.11.2011
Av: Patric Jonsson
-14.11.2011
Av: Patric Jonsson
- 8.11.2011
Av: Danel
- 7.11.2011
Av: Patric Jonsson
-27.09.2011

Senaste kommentarer

Senaste trådarna

Av Hallon
- 08/05/2012
Av goldensebbe
- 06/04/2012
Av Hallon
- 29/03/2012
Av buddha1966
- 06/03/2012
Av buddha1966
- 29/02/2012
Av Wide Circle
- 20/02/2012
Av zocstyle
- 15/02/2012
Av ufoalf30
- 05/01/2012
Av peterdavidsson
- 08/12/2011
Av JohnPaulie
- 03/12/2011
Av coffaldo
- 17/11/2011
Av buddha1966
- 05/11/2011
Av buddha1966
- 03/11/2011

Blogkalender

  • 2012 (3)
  • 2011 (37)
  • 2010 (85)
  • 2009 (18)
  • Vem är online

    Vi har 33 besökare online
    RSS
    Patric Jonsson - flashguru.se
    RocketTheme Joomla Templates