Actionscript 3 使用AS3从单独的行接收单击事件

Actionscript 3 使用AS3从单独的行接收单击事件,actionscript-3,flash,Actionscript 3,Flash,我希望从文本字段中的单独行接收单独的单击事件,并且每当用户单击某一行时,我希望突出显示该行并发生事件 理想情况下,我希望这种情况发生在动态文本中,而不必用手将文本分开。使用htmlText属性是一个选项,但我不确定如何将clickEvents绑定到单独的元素 从哪里开始?没有现成的解决方案。但是你可以用一些东西自己制作: 为整个文本字段设置CLICK listener 收听单击并检查caretIndex属性 使用getLineIndexOfChar检查当前插入符号位置的行 使用getLineO

我希望从文本字段中的单独行接收单独的单击事件,并且每当用户单击某一行时,我希望突出显示该行并发生事件

理想情况下,我希望这种情况发生在动态文本中,而不必用手将文本分开。使用htmlText属性是一个选项,但我不确定如何将clickEvents绑定到单独的元素


从哪里开始?

没有现成的解决方案。但是你可以用一些东西自己制作:

  • 为整个文本字段设置CLICK listener
  • 收听单击并检查
    caretIndex
    属性
  • 使用
    getLineIndexOfChar
    检查当前插入符号位置的行
  • 使用
    getLineOffset
    getLineLength
    获取该行的第一个和最后一个字符的位置
  • 使用
    setSelection
    突出显示此行
可能有一些更快更简单的方法,但这是肯定有效的:)

编辑:决定发布解决方案代码,因为我想知道它到底是如何工作的。。如果让它不发表,而让你去做,那将是一种耻辱:)


您认为文本字段是可选择的吗?这是下面的答案起作用所必需的。
field.addEventListener(MouseEvent.CLICK, onTfClicked);

function onTfClicked(e:MouseEvent):void {
    trace (field.caretIndex);

    var line:uint = field.getLineIndexOfChar(field.caretIndex);
    var start:uint = field.getLineOffset(line);
    var end:uint = start + field.getLineLength(line);

    field.setSelection(start, end);
}