Добавление TLF очень сильно увеличивает размер файла SWF - PullRequest
0 голосов
/ 31 октября 2011

У меня есть одно текстовое поле, которое должно поддерживать языки RTL, но это невозможно сделать с обычным TextField, поэтому я использовал TLF.Я создал тестовый проект только для того, чтобы сделать тест с этим небольшим текстовым полем, использующим TLF, и предположить, что он стал 346 КБ.Я просмотрел скомпилированный SWF-файл во флэш-разработке и вижу множество классов из TLF-фреймворка, которые я не импортировал в текстовый проект.

Как удалить их из надстройки в основной файл SWF?

Вот мой код

msg = "<TextFlow xmlns='http://ns.adobe.com/textLayout/2008'><p><span>Enter text here ...</span></p></TextFlow>";
textFlow = TextConverter.importToFlow(msg , TextConverter.TEXT_LAYOUT_FORMAT);
textFlow.fontSize = 12;
textFlow.flowComposer.addController(new ContainerController(this, 200, 50));
textFlow.flowComposer.updateAllControllers();

undoManager = new UndoManager();
editManager = new EditManager(undoManager);

textFlow.interactionManager = editManager;

Так что в основном я импортирую эти классы

import flashx.textLayout.compose.StandardFlowComposer;
import flashx.textLayout.container.ContainerController;
import flashx.textLayout.conversion.TextLayoutExporter;
import flashx.textLayout.elements.SpanElement;
import flashx.textLayout.elements.ParagraphElement;
import flashx.textLayout.elements.TextFlow;
import flashx.textLayout.formats.TextLayoutFormat;
import flashx.textLayout.factory.StringTextLineFactory;
import flash.text.engine.TextLine;
import flash.geom.Rectangle;
import flashx.textLayout.edit.EditManager;
import flashx.undo.UndoManager;
import flashx.textLayout.conversion.TextConverter;

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Компилятор встраивает только те классы, которые действительно нужны вашему проекту.Классы, которые, по вашему мнению, вам не нужны, вероятно, используются классами инфраструктуры TLF, которые вы сделали импортирующими.

Языки RTL очень сложно реализовать, особенно в сочетании с текстом LTR.Но - всегда есть возможность расширить TextField и создать собственное поле с поддержкой RTL, которое, вероятно, будет значительно меньше по размеру файла.Все зависит от того, сколько времени вы готовы потратить.

1 голос
/ 06 ноября 2011

У вас есть другой вариант. Если вас больше всего беспокоит размер окончательного SWF-файла, вы можете переключить ' Framework Linkage ' в области свойств ' Flex Build Path ' на ' Runtime общая библиотека (RSL) '. Это позволит вашему SWF-файлу не включать библиотеки времени выполнения. Файл textLayout_2.0.0.232.swz сам по себе составляет 188 КБ. Эта библиотека времени выполнения не будет загружаться клиенту, если он уже есть, и в этом случае загрузка вашего SWF-файла будет единственной загруженной частью и будет намного меньше.

Вы должны попробовать это и посмотреть, каков размер вашего SWF. Убедитесь, что у вас есть файлы RSL, развернутые с вашим SWF, чтобы они могли быть загружены при необходимости.

...