【问题标题】:AS3: render plain text in a textFieldAS3:在 textField 中呈现纯文本
【发布时间】:2012-12-13 03:34:44
【问题描述】:

textField 的当前行为是将所有文本呈现为 HTML。有没有办法告诉系统这是纯文本,即使它看起来像 html?

在 AS2 中有一个 .html 属性,我可以将其设置为 false 以获得这种行为,它似乎已经消失了。

我很清楚我可以对输入进行 html 转义以获得所需的行为,但我正在寻找最干净/最简单的解决方案。 (而且看来我必须编写自己的 html-escape 函数......)

【问题讨论】:

  • 您指的是哪个“文本字段”类?您提到TextField 这是一个原生 Flash 播放器类(不是 Flex),但看起来您正在使用 Flex。 TextField 类有一个 htmlText 属性,所以我的假设是,如果您使用该属性,它只会呈现 HTML,并且您只需使用 TextField 的 text 属性即可获得所需的效果。
  • @SunilD。抱歉,我不清楚 flex 和 flash 之间的区别。就我而言,我认为它们是可以互换的。至于您的建议,分配给 .text 并没有您期望的行为。该行为与分配给 .htmlText 的行为完全相同。

标签: actionscript-3 apache-flex actionscript flex3 textfield


【解决方案1】:

AS3 文本字段有两个属性,texthtmlTexttext 属性可用于显示纯文本,即使它看起来像 html。这两个属性由 Flash 自动链接,因此编辑 text 将更新 htmlText,反之亦然。

您应该能够使用text 属性来实现您的目标。不幸的是,如果您在文本字段中使用样式表,这两个属性都将被视为 HTML。在这种情况下,您有两个选择。您可以使用简单的 TextFormat 对象在没有样式表的情况下执行样式设置,如果您的样式表不太复杂,这可能很简单。如果您确实需要使用样式表,您可以利用 AS3 的两个文本属性之间的链接来自动转义您的文本。

例如,如果您想更新名为 tf 的使用样式表的文本字段,但您想要纯文本,您可以这样做:

var temp:TextField = new TextField();
temp.text = plainText;
tf.text = temp.htmlText;

临时文本字段将自动生成转义的 HTML,然后您可以在实际文本字段中使用它。

【讨论】:

  • 这是不正确的。将 'test' 分配给 .text 会产生斜体文本,而 .htmlText 包含未转义的 <i> 标记。
  • @bukzor 你在说什么?你用的是什么类?我只是用标准的TextField 试了一下,屏幕上出现了<i>test</i>,找不到斜体。
  • flash.text.TextField 我已经非常彻底地验证了这一点。这是我尝试的第一件事。
  • 有没有什么地方可以让我快速生成一个 swf,与 gist 或 jsfiddle 相媲美?
  • @bukzor 我不知道。您能否发布您正在尝试的代码,以便我们可以尝试重现问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
  • 2023-03-26
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多