如何仅使用ActionScript添加TextArea的RichEditableText

时间:2011-09-11 23:32:47

标签: actionscript-3

在试图找到这个看似简单问题的答案的两天之后,我的头脑正在旋转。

我正在开发一个完全使用ActionScript构建的Flex / AIR应用程序 - 除了最初自动创建的MXML之外,没有MXML。

我需要动态生成某种可编辑的文本字段,并且可以高度控制格式。 TLF文本字段看起来都很棒,除了我无法在屏幕上呈现它们中的任何一个。由于应用程序的性质,它们必须在MovieClip中,但是因为我已经读过所有内容都必须是UIComponent的后代,所以我使用UIMovieClip,这是AddChild'ed到舞台。

我要在这里发疯,整个应用程序都处于危险之中。我不能使用MXML,互联网上的所有10,000个例子都是MXML。我需要动态生成这些。我需要根据数据库数据在一个动画片段下生成超过50个字段。使用MXML无法对其进行硬编码。请不要建议改变这个。 GUI非常具体,而且它是正确的GUI。

在两天的搜索中,我在ActionScript中找不到一个例子,只有MXML。我已经尝试了一些闻起来像一个例子。

我是否缺少一些明显的通用指针?我很乐意发布代码,但它没有意义,因为我经历过这么多的例子。

有没有人有最简单的代码可以在ActionScript中创建任何类型的TLF文本编辑字段(零MXML),然后将其添加到MovieClip或UIMovieClip,它被添加到桌面AIR应用程序的阶段? / p>

我将非常珍惜这里的任何帮助。

最佳,

1 个答案:

答案 0 :(得分:1)

这应该让你开始:

//create your TextFlow component
var textFlow:TextFlow = new TextFlow();
var p:ParagraphElement = new ParagraphElement();
var span:SpanElement = new SpanElement();
span.text = "hello world";
p.addChild(span);
textFlow.addChild(p);

//create a Sprite that will contain the text
var textBlock:Sprite = new Sprite();
//create a controller for compositing
var controller:ContainerController = new ContainerController(textBlock);
//set the size of the composition
controller.setCompositionSize(100, 200);
//make the controller control the TextFlow object
textFlow.flowComposer.addController(controller);
//update the composition
textFlow.flowComposer.updateAllControllers();

//add to the stage
addChild(textBlock);

关于尺寸:使用setCompositionSize()而不是Sprite的宽度和高度属性非常重要。

使用addController()您可以将文本分散到多个精灵上。每个Sprite都有自己的ContainerController,但是所有的Sprite都会共享相同的FlowComposer来计算组合。

警告:像这样使用TLF会非常复杂。上面的代码是让事情运行的最低限度。我不知道你的要求,但你可能会遇到其他一些障碍。你必须问自己这个问题:你真的愿意放弃TextArea的所有内置功能吗?根据要求,可能需要数月的开发才能使事情正确。你仍然可能想重新考虑你的架构......