0

我有一个需要支持 RTL 语言的文本字段,但这对于普通的 TextField 是无法实现的,所以我使用了 TLF。我创建了一个测试项目,只是为了对这个使用 TLF 的小文本字段进行测试,然后猜猜它变成了 346KB。我在 flash develop 中浏览了编译好的 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;
4

2 回答 2

2

编译器仅嵌入您的项目真正需要运行的类。您认为不需要的类可能已被您导入的 TLF 框架类使用。

RTL 语言真的很难实现,尤其是与 LTR 文本结合使用时。但是 - 总是有可能扩展 TextField 并创建自己的 RTL 功能字段,这可能会大大减少文件大小。这完全取决于你愿意花多少时间。

于 2011-10-31T09:54:22.040 回答
1

你确实有另一个选择。如果您最关心的是最终 swf 的大小,您可能希望将“ Flex Build Path ”属性区域中的“ Framework Linkage ”切换为“ Runtime shared library (RSL) ”。这将允许您的 swf 中不包含任何运行时库。textLayout_2.0.0.232.swz 文件本身是 188kb。如果客户端已经拥有此运行时库,则不会将其下载到客户端,在这种情况下,下载您的 swf 将是唯一下载的部分,并且要小得多。

您应该尝试一下,看看您的 swf 的大小是多少。确保您已将 RSL 文件与您的 swf 一起部署,以便在需要时可以下载它们。

于 2011-11-05T21:55:34.413 回答