Как отобразить только одну букву в Flex Text Layout Framework ContainerController? - PullRequest
1 голос
/ 24 апреля 2010

Я пытаюсь внедрить функцию отброшенных инициалов в свое приложение Flex. Поскольку Text Layout Framework не поддерживает плавающее, единственное известное решение - создать дополнительные контейнеры, которые будут связаны вместе, отображая один и тот же текстовый поток. Ширина и расположение этих контейнеров должны быть установлены таким образом, чтобы они делали вид, что они плавающие.

Я использую то же решение для пропущенных инициалов. По сути, я создаю три контейнера, один для начальной буквы (первая буква в текстовом потоке), другой для текста, плавающего вокруг, и третий для отображения текста под этими двумя. Все эти контейнеры имеют общий текстовый поток.

У меня большие проблемы с тем, чтобы заставить контроллер отображать только одну букву из потока текста, и соответственно изменить его размер, чтобы он не занимал лишнего дополнительного пространства и больше не помещал в него текст.

Использование ContainerController.getContentBounds () возвращает мне размер всего спрайта буквы (с пустыми частями всплытия / спуска), а не высоту / ширину фактической отрисованной буквы. Я использую textFlow.flowComposer.getLineAt (0) .getTextLine (). GetAtomBounds (0), но я думаю, что это все еще не правильно. Кроме того, даже если я устанавливаю контейнер для этих размеров, он иногда отображает дополнительный текст, особенно для больших шрифтов. Смотрите экран:

альтернативный текст http://img97.imageshack.us/img97/6105/tlfissue.png

Кроме того, если я установлю ширину всего на 1 пиксель меньше, чем contentBounds, все сойдет с ума, контейнеры будут перемещаться, позиционироваться с большими полями и т. Д.

Как мне решить эту проблему? Это ошибка в TLF / Player? Можно как-нибудь это исправить? Могу ли я определить размер буквы или настроить автоконтроллер-контейнер для размера только одной буквы?

1 Ответ

0 голосов
/ 06 октября 2012

Что вам нужно сделать, это установить для columnBreakAfter значение BreakStyle.ALWAYS. Это будет означать, что ваше единственное письмо должно быть в собственном SpanElement внутри ParagraphElement.

Пример:

var p:ParagraphElement = new ParagraphElement();
p.columnBreakAfter = BreakStyle.ALWAYS; //Forces a break in the container

var span:SpanElement = new SpanElement();
span.text = "A";

p.addChild(span);
...