2010-11-20 4 views
0

Ich benutze TLF, um einen Wörterbucheintrag auszulegen. Es funktioniert ziemlich gut, aber ich brauche eine feinere Steuerung des Layouts, als ich durch die Einstellung von Style-Eigenschaften auf FlowElements erreichen kann, hauptsächlich für horizontalen Abstand und das Setzen von Padding auf SpanElements unabhängig von ihren Eltern. Die Lösung, die am vielversprechendsten erscheint, besteht darin, die verschiedenen Elemente des Eintrags in separate Container zu trennen und den Text durchzufließen, indem progressiv für jedes neue Element neue Container und ContainerController hinzugefügt werden, deren Größe an den Inhalt gebunden ist in jeden neuen Container fließen.TLF - Fließender Text durch mehrere Container und Zeilenumbrüche

Diese ALMOST funktioniert, aber der Text wird nur dann korrekt in den nächsten Container fließen, wenn ein zusätzlicher Zeilenumbruch zwischen den beiden Textabschnitten eingefügt wird, die zu verschiedenen Containern gehen sollen. Ohne den Zeilenumbruch sind die Container korrekt dimensioniert, es wird jedoch kein Text angezeigt.

In diesen Beispielen habe ich den Container-Sprites Rahmen hinzugefügt, damit Sie sehen können, wo sie gezeichnet werden. Abgesehen vom Zeilenumbruch ist der Text genau gleich. Das Silbenfeld ist ein SpanElement in einem ParagraphElement. Das Auszeichnungslabel und der Text sind separate SpanElements in einem anderen ParagraphElement.

ohne Zeilenumbruch:

no line break

Mit Zeilenumbruch zwischen 'rab-Bit' und 'Sounds Like:':

1 break

Mit Zeilenumbruch nach 'rae biht' (Zeilenumbruch hat vorher keine Auswirkung):

2 breaks

Wie Sie sehen können, wird die Aussprache nicht angezeigt, es sei denn, ein Zeilenumbruch wird nach dem Text hinzugefügt, aber die Ausrichtung ist dann deaktiviert. Keine Kombination von Zeilenumbrüchen scheint sie korrekt auszurichten.

Irgendwelche Ideen? Sind diese Fehler in TLF? Soll ich eine andere Methode ausprobieren? Ich möchte wirklich, dass der gesamte Text als eine Einheit auswählbar ist, und ich liebe die bessere Darstellung und Kontrolle, die TLF bietet, aber ich brauche auch die Layoutflexibilität. Ich nehme an, dass es möglich ist, dass ich so etwas mit Zeilenumbrüchen und Positionierungsoffsets hacken kann, aber es wäre sicherlich nicht schön (oder haltbar). Danke fürs Lesen.

Antwort

1

Ich habe vor einiger Zeit ein Rezept für Adobe Cookbooks geschrieben, das Ihnen dabei helfen könnte. Grundsätzlich fiel es mir wesentlich leichter, komplett auf die Span- und Absatzelemente zu verzichten und mich stattdessen auf Containersteuerungen zu konzentrieren. hoffe, es hilft:

Generating a formatted TextFlow Layout for plain text assets


aktualisiert

für dynamische Container, werden Sie wahrscheinlich ein Zeilenende Trennzeichen, um Ihre Zielzeichenfolge zu bestimmen, zusammen mit seinem String-Länge, die Schriftgröße verwenden könnten , Polsterung usw.Könnten Sie die gewünschte Größe für Ihren Behälter finden und die Größe des Containers entsprechend durch den Aufruf ändern:

targetFlow.flowComposer.getControllerAt(controllerIndex).getContentBounds().width; 

//and/or 

targetFlow.flowComposer.getControllerAt(controllerIndex).getContentBounds().height; 

hier ist ein weiteres Rezept, das ich automatisch geschrieben, die die Schriftgröße eines Textflusses ändert sich in seinem Behälter zu passen: Automating font size for TextFlow containers

aber anstatt die Schriftgröße zu ändern, wie ich getan habe, könnten Sie die Containergröße ändern, um Ihren Text zu passen.

ich hoffe, das hilft.

+0

@ TheDarkInl1978 Das ist ein toller Artikel. Danke für die Verknüpfung. Aber ich denke, der Hauptunterschied zwischen Ihrem Beispiel und dem, was ich versuche, ist eine feste oder eine dynamische Containergröße. In dem Artikel legen Sie einige Container mit konstanten Größen an, dann fließen Sie Text durch sie, und das scheint ziemlich gut zu funktionieren. Aber was ich tun möchte, ist, bestimmte Abschnitte mit variabler Länge des Textes auf entsprechende unabhängige Behälter mit geeigneter Größe einzuschränken. Haben Sie irgendwelche Gedanken, Ihre Herangehensweise an diese Aufgabe anzupassen? Vielen Dank. – Dane

+0

richtig natürlich. Ich habe meine Antwort aktualisiert. – TheDarkIn1978

+0

@ TheDarkInl1978 Danke für das Update. Das ist ähnlich dem, was ich oben versucht habe, aber wie Sie sehen können, stieß ich auf viele Inkonsistenzen mit dem Text, der von Container zu Container fließt. Wollen Sie das tun, indem Sie eine einfache Textzeichenfolge erstellen, anstatt FlowElements hinzuzufügen? Ich nehme an, eine Sache, die ich versuchen könnte, ist, zuerst unabhängige TextFlows für jeden Textabschnitt (als Klartext) zu erstellen, um die Containergrößen festzulegen und dann alle Container mit dem vollständigen TextFlow zu verknüpfen. Scheint ineffizient, aber vielleicht einen Versuch wert. – Dane

Verwandte Themen