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

时间:2014-05-26 09:50:41

标签: actionscript-3 flash

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

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

我从哪里开始?

1 个答案:

答案 0 :(得分:1)

没有为此准备好的解决方案。但你可以使用一些东西自己制作:

  • 为整个文本字段设置CLICK侦听器
  • 听取点击并查看caretIndex属性
  • 使用getLineIndexOfChar检查当前插入位置的行是什么
  • 使用getLineOffsetgetLineLength获取该行第一个和最后一个字符的位置
  • 使用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);
}