如何将 Spark TextArea 组件显示为 MovieClip 的子组件

Posted

技术标签:

【中文标题】如何将 Spark TextArea 组件显示为 MovieClip 的子组件【英文标题】:How to display a Spark TextArea component as a child of a MovieClip 【发布时间】: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 3 mx:Canvas 可以替换为 Flex 4 s:SpriteVisualElement 我说的是 Flex spark.components.TextArea 组件,我使用的是 Flex 4.5。该问题与Canvas 无关,因为当TextArea 直接添加为它的子级时,它可以正常工作。使用的库处理可以由用户生成的形状,只要它们是MovieClip 的实例即可。在这种情况下,我想向它传递一个包含可编辑文本区域并处理从右到左书写的文本的形状。这就是我想使用带有属性direction 的Spark TextArea 类的原因。希望对您有所帮助! spark.components.TextArea 无法添加到 UIMovieClip。 UIMovieClip 类实现了 Flash 组件像普通 Flex 组件一样使用所需的接口。它不允许将 Flex 组件添加为 UIMovieClip 的子项。 Spark 的 s:SpriteVisualElement 是 Halo 的 mx:Canvas 的一个很好的替代品。如果您尝试从 Flash Pro 合并控件,可以使用 fl.controls.TextArea 这是否意味着我别无选择,只能手动使用 TextFlowContainerController 在这种情况下? (两者都是flashx.textLayout 包的一部分) 如果这个库只需要TextArea的几何形状,你可以先添加TextArea,然后在TextArea设置mouseEnabled=falsemouseChildren=false上方覆盖一个MovieClip。这样,MovieClip 下方的 TextArea 将保持交互性,并且库仍可以在 MovieClip 上执行渲染。 【参考方案1】:

如果您使用的 MovieClip 是从 Flash 编译的,那么我们最近经常使用的一个很好的解决方案是将其实际导出为 Flex 友好的容器: http://www.webkitchen.be/2009/02/11/video-tutorial-create-flex-container-components-with-flash-cs4/

如果没有,请尝试扩展ContainerMovieClip 而不是UIMovieClip,并设置其content 属性。

【讨论】:

以上是关于如何将 Spark TextArea 组件显示为 MovieClip 的子组件的主要内容,如果未能解决你的问题,请参考以下文章

将 Spark TextArea 文本复制到另一个 Spark TextArea

具有不同滑块的 Spark textarea

如何使用钩子将 React 类组件转换为功能组件

使用 TextLayoutFormat 将嵌入字体应用于 spark textArea 中的特殊字符

Vue2:使用输入类型为 textarea 的表单组件来显示和编辑数据(无需直接操作道具)

Flex ApplyFormatOperation 中断 Spark TextArea 中的撤消/重做