【发布时间】:2012-07-05 11:01:47
【问题描述】:
我需要在我的应用程序中使用 TextArea,因为它支持 TLF 框架并允许用户编辑文本。
我的问题是这个 TextArea 必须是 MovieClip 的子级,但我无法让它工作并且 TextArea 没有显示。
这是我的代码示例:
var mc:UIMovieClip = new UIMovieClip();
mc.graphics.clear();
mc.graphics.lineStyle(2, 0, 1);
mc.graphics.drawRect(0, 0, 400, 300);
mc.width = 400;
mc.height = 300;
var textArea:TextArea = new TextArea();
textArea.width = 350;
textArea.height = 250;
textArea.text = "Hello world!";
mc.addChild(textArea);
myCanvas.rawChildren.addChild(mc);
当我将 TextArea 直接添加为画布的子项时,即当我替换行时,TextArea 组件会正确显示
mc.addChild(textArea);
以下
mainCanvas.addChild(mc);
TextArea 需要成为 MovieClip 的子项的原因是我正在使用与 MovieClips 一起使用的外部库。 如果我使用 UIMovieClip 而不是 MovieClip,这个技巧也不起作用。
有人可以解释为什么在那种情况下不会显示 TextArea 吗? 是否有任何解决方法来获得所需的结果? (我尝试使用 UIComponent 作为中间子级但没有成功)
【问题讨论】:
-
假设您的意思是 Flex
mx.controls.TextArea,它不能添加到 UIMovieClip。也许您可以详细说明您的最终目标,包括如何使用MovieClip调用这个外部库。另外,您使用的是什么版本的 Flex? Flex 3mx:Canvas可以替换为 Flex 4s:SpriteVisualElement。 -
我说的是 Flex
spark.components.TextArea组件,我使用的是 Flex 4.5。该问题与Canvas无关,因为当TextArea直接添加为它的子级时,它可以正常工作。使用的库处理可以由用户生成的形状,只要它们是MovieClip的实例即可。在这种情况下,我想向它传递一个包含可编辑文本区域并处理从右到左书写的文本的形状。这就是我想使用带有属性direction的SparkTextArea类的原因。希望对您有所帮助! -
spark.components.TextArea无法添加到 UIMovieClip。 UIMovieClip 类实现了 Flash 组件像普通 Flex 组件一样使用所需的接口。它不允许将 Flex 组件添加为 UIMovieClip 的子项。 Spark 的s:SpriteVisualElement是 Halo 的mx:Canvas的一个很好的替代品。如果您尝试从 Flash Pro 合并控件,可以使用fl.controls.TextArea。 -
这是否意味着我别无选择,只能手动使用
TextFlow和ContainerController在这种情况下? (两者都是flashx.textLayout包的一部分) -
如果这个库只需要TextArea的几何形状,你可以先添加TextArea,然后在TextArea设置
mouseEnabled=false和mouseChildren=false上方覆盖一个MovieClip。这样,MovieClip 下方的 TextArea 将保持交互性,并且库仍可以在 MovieClip 上执行渲染。
标签: actionscript-3 flash apache-flex textarea movieclip