两天来,我一直在努力寻找这个看似简单的问题的答案。
我正在开发一个完全用ActionScript构建的Flex/AIR应用程序--除了最初自动创建的内容之外,没有任何MXML。
我需要动态生成某种可编辑的文本字段,对格式具有很高的控制能力。TLF文本字段看起来都很棒,只是我无法在屏幕上渲染其中的任何一个。由于应用程序的性质,它们必须在MovieClip中,但是由于我已经读到所有东西都必须是UIComponent的后代,所以我使用了UIMovieClip,它是AddChild编辑的。
我要疯了,整个应用程序都因为这个而处于危险之中。我不能使用MXML,互联网上所有的10,000个例子都是MXML。我需要动态生成这些。我需要在一个基于数据库数据的电影下生成50个以上的字段。无法用MXML对其进行硬编码。请不要建议改变这个。GUI非常具体,而且它是正确的GUI。
在两天的搜索中,我在ActionScript中找不到一个示例,只有MXML。我试过所有闻起来像个例子的东西。
有什么明显的通用指针我遗漏了吗?我很乐意贴出代码,但这没有意义,因为我已经看过太多的例子了。
有没有人有最简单的代码在ActionScript中创建任何类型的TLF文本编辑字段(零MXML),然后添加到MovieClip或UIMovieClip中,后者被添加到桌面AIR应用程序的阶段?
我会非常珍惜这里的任何帮助。
最好的
每
发布于 2011-09-12 07:19:27
这应该会让你开始:
//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()而不是雪碧的宽度和高度属性。
使用addController(),您可以将文本分散到几个雪碧上。每个雪碧都有自己的ContainerController,但它们都共享相同的FlowComposer来计算组成。
警告:像这样使用TLF可能非常复杂。上面的代码是让事情运行的最低限度。我不知道您的需求,但是您可能会遇到其他一些障碍。你必须问自己这个问题:你真的愿意放弃TextArea的所有内置特性吗?根据需求,您可能要花费几个月的开发时间才能完成正确的工作。你还是想重新考虑一下你的建筑..。
https://stackoverflow.com/questions/7382026
复制相似问题