Apache flex 在mx.controls.TextArea中使用Flex ItemRenderer

Apache flex 在mx.controls.TextArea中使用Flex ItemRenderer,apache-flex,actionscript,Apache Flex,Actionscript,我想在文本区域中集成ItemRenders。其目的是通过自己的简单界面可视化关键字,而用户仍然可以将整个内容视为普通文本来选择字体、字体大小等 例如,这可能是文本区域的htmltext: <TEXTFORMAT LEADING="2"> <P ALIGN="RIGHT"> <FONT FACE="Century Gothic" SIZE="24" COLOR="#999999"> The temperature is {TE

我想在文本区域中集成ItemRenders。其目的是通过自己的简单界面可视化关键字,而用户仍然可以将整个内容视为普通文本来选择字体、字体大小等

例如,这可能是文本区域的htmltext:

<TEXTFORMAT LEADING="2">
    <P ALIGN="RIGHT">
      <FONT FACE="Century Gothic" SIZE="24" COLOR="#999999">
        The temperature is {TEMP|DEGREES}°.
      </FONT>
    </P>
</TEXTFORMAT>

温度为{TEMP | DEGREES}°。

在本例中,{TEMP | DEGREES}部分应替换为一个ItemRenderer,其中显示一个下拉列表,其中包含可能的关键字(温度、时间等),第二个下拉列表中包含参数,具体取决于所选关键字(对于温度为度、华氏度)

关于如何处理这个问题有什么想法或建议吗

非常感谢,
弗兰克

是的,如果没有对TextArea的主要黑客攻击,这绝对是不可能的,因为它最终将不再是一个真正的TextArea

然而,我做过类似的事情。它非常简单,只需创建一个简单但健壮的数据结构(比如说一个数组,其中包含具有某种不可知数据属性和“类型”的自定义模型,这样您就知道如何处理它),遍历它,然后将其添加到一个容器中(比如HBox)。根据数据的类型,您将需要某种算法来知道如何处理数据(创建哪个“项目渲染器”)


这绝对是可能的,因为我已经创建了一种方法,可以仅基于数据创建动态复杂表单,但这不是最简单的事情。您需要对其进行大量测试,并考虑数据结构以及如何对其进行大量抽象。我会和你分享代码,但IP不是我的。

是的,如果没有对TextArea进行主要的黑客攻击,肯定是不可能的,而TextArea最终将不再是一个真正的TextArea

然而,我做过类似的事情。它非常简单,只需创建一个简单但健壮的数据结构(比如说一个数组,其中包含具有某种不可知数据属性和“类型”的自定义模型,这样您就知道如何处理它),遍历它,然后将其添加到一个容器中(比如HBox)。根据数据的类型,您将需要某种算法来知道如何处理数据(创建哪个“项目渲染器”)


这绝对是可能的,因为我已经创建了一种方法,可以仅基于数据创建动态复杂表单,但这不是最简单的事情。您需要对其进行大量测试,并考虑数据结构以及如何对其进行大量抽象。我愿意与您共享代码,但IP不是我的。

如果您想使用mx TextArea执行此操作,您将陷入痛苦的世界。使用Spark TextArea会容易得多。这是一个选择吗?我认为即使是在火花文本领域,这也将是一个艰难的选择。在我看来,你实际上并不想要一个文本区;但是一些自定义组件是多个控件的混合体,是动态创建的。不,项目仍在Flex3中,因此没有Spark…听起来混合体解决方案也将是一个痛苦的世界;-)如果你想用mx TextArea做这件事,你将陷入痛苦的世界。使用Spark TextArea会容易得多。这是一个选择吗?我认为即使是在火花文本领域,这也将是一个艰难的选择。在我看来,你实际上并不想要一个文本区;但是一些自定义组件是多个控件的混合体,是动态创建的。不,项目仍在Flex3中,因此没有Spark…听起来混合体解决方案也将是一个痛苦的世界;-)这可能是最好的办法。但这种方法的问题是,不能像在textarea中那样在不同的渲染器中选择文本。我需要这个功能,以便用户可以轻松地应用字体,文本大小等。这个“解决方案”实际上只是为了显示最终结果。如果需要用户修改结果或文本,则应尝试使用具有适当用户界面的全文驱动方法(如stackoverflow是如何做到的)。例如,所有内容都是文本,如果他们想要一个组合框,只需在文本区域顶部有一个按钮,插入
{combobox[value1,value2]}
或类似的内容。然后,您需要解析文本并创建适当的数据模型来显示。这可能是最好的方法。但这种方法的问题是,不能像在textarea中那样在不同的渲染器中选择文本。我需要这个功能,以便用户可以轻松地应用字体,文本大小等。这个“解决方案”实际上只是为了显示最终结果。如果需要用户修改结果或文本,则应尝试使用具有适当用户界面的全文驱动方法(如stackoverflow是如何做到的)。例如,所有内容都是文本,如果他们想要一个组合框,只需在文本区域顶部有一个按钮,插入
{combobox[value1,value2]}
或类似的内容。然后,您需要解析文本并创建一个适当的数据模型来显示。