在试图找到这个看似简单问题的答案的两天之后,我的头脑正在旋转。
我正在开发一个完全使用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>
我将非常珍惜这里的任何帮助。
最佳,
每
答案 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的所有内置功能吗?根据要求,可能需要数月的开发才能使事情正确。你仍然可能想重新考虑你的架构......