如何将 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 作为中间子级但没有成功)
【问题讨论】:
假设您的意思是 Flexmx.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
。
这是否意味着我别无选择,只能手动使用 TextFlow
和 ContainerController
在这种情况下? (两者都是flashx.textLayout
包的一部分)
如果这个库只需要TextArea的几何形状,你可以先添加TextArea,然后在TextArea设置mouseEnabled=false
和mouseChildren=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
使用 TextLayoutFormat 将嵌入字体应用于 spark textArea 中的特殊字符