Actionscript 3 如何跟踪AS3中动态文本字段中的一段文本

Actionscript 3 如何跟踪AS3中动态文本字段中的一段文本,actionscript-3,textfield,dynamic-text,textformat,Actionscript 3,Textfield,Dynamic Text,Textformat,我希望能够将非样式属性应用于TextField中的文本部分。例如,角色30-45将设置为在特定方向上设置动画 由于此字段是可编辑的,如果以任何方式编辑文本,则字符30-45可能不再位于30-45 有人能想出一种优雅的方法来跟踪哪些角色应用了属性吗?我有一个类似的项目,最终扩展了TextField类以满足我的需要。下面是对该做什么的简短描述-恐怕我的实际代码是保密的: 覆盖text和htmlText 将这些setter中的任何内容解析为自定义对象数组。每个对象都包含原始文本块和应用于它们的元数据(

我希望能够将非样式属性应用于TextField中的文本部分。例如,角色30-45将设置为在特定方向上设置动画

由于此字段是可编辑的,如果以任何方式编辑文本,则字符30-45可能不再位于30-45


有人能想出一种优雅的方法来跟踪哪些角色应用了属性吗?

我有一个类似的项目,最终扩展了TextField类以满足我的需要。下面是对该做什么的简短描述-恐怕我的实际代码是保密的:

  • 覆盖
    text
    htmlText
  • 将这些setter中的任何内容解析为自定义对象数组。每个对象都包含原始文本块和应用于它们的元数据(格式、注释等)

    比如说,

    <span class="sometext" animation="true">Info</span> 
    
  • 然后,通过使用
    appendText
    逐块添加原始文本,并在每个追加步骤后使用
    setTextFormat
    应用格式(或执行任何其他必要操作),呈现实际文本输出
  • 添加事件侦听器以对文本输入和/或按键向下/按键向上事件作出反应,以捕获任何新的用户输入。(您将一次又一次地替换文本字段的整个文本内容,因此不能使用
    super.text
  • 通过使用
    selectionBeginIndex
    selectionIndex
    处理用户输入(计算对象数组原始文本中的字符数,找出受影响的块)。直接在容器对象中添加或替换新文本,然后使用步骤3。刷新文本字段中的整个文本
  • 我还添加了一种方法,可以在呈现数组之前减少数组(即,将相邻的块与相同的元数据组合在一起)。这使数组保持精简,并有助于创建不具有复杂树结构的XML输出(对于这种情况,一维是我们非常喜欢的)
  • 如果您在其他地方需要结果,请覆盖
    text
    htmlText
    的getter以返回新格式化的信息。我使用
    htmlText
    返回一个完全修饰的xml字符串,并保留
    text
    以访问原始文本内容,就像在一般文本字段中一样
    哇,这是相当复杂的,所以谢谢你的步骤,非常有用。
    { text:"Info", clazz="sometext", animation:true };