停止textDown的mouseDown传播

时间:2011-09-15 13:39:00

标签: flex actionscript-3

如何在不破坏功能的情况下阻止文本行在应用程序中传播(?)事件。

这就是我所拥有的

Application
  Component 1
     RichEditableTextfield

组件1侦听多个子节点中的事件并查找:

if (event.target is RichEditableTextfield) {
// Do stuff here...
} else {
// Do other stuff
}

但是RichEditableTextfield会在每个文本行上发送MouseDown事件,而Component 1会混淆并认为我想要“做其他事情”而不是“Do stuff here ...”因为event.target是TextLine。

现在我有了这个来阻止TextLines进一步传播:

private function stopTextLineEvents():void
{
    if (this.textFlow.flowComposer) {
        for (var i:int = 0; i < this.textFlow.flowComposer.numLines; i++) {
            var flowLine:TextFlowLine = this.textFlow.flowComposer.getLineAt(i);
            var textLine:TextLine = flowLine.getTextLine(true);

            if (textLine) {
                textLine.removeEventListener(MouseEvent.MOUSE_DOWN,onTextLineDown);
                textLine.addEventListener(MouseEvent.MOUSE_DOWN,onTextLineDown);
            }

        }
    }
}

protected function onTextLineDown(event:MouseEvent):void
{
    event.stopPropagation();
    this.dispatchEvent(event.clone());
}

它几乎可以工作,但我的问题是,当我有多行时,每次我点击一行(这不是第一行),文本字段中的第一行得到锚点而不是我点击的行。< / p>

0 个答案:

没有答案