• textLayout在快速输入清除时报错解决方法


    var tf:TextFlow;

    var len:int = tf.numChildren;
    for (var i:int = 0; i < len; i += 1)
    {
      tf.removeChildAt(0);
    }

    tf.flowComposer.composeToPosition();
    tf.flowComposer.updateAllControllers();

    TypeError: Error #1009: 无法访问空对象引用的属性或方法。
     at flashx.textLayout.edit::ParaEdit$/insertText()       flashx extLayouteditParaEdit.as:54]
     at flashx.textLayout.operations::InsertTextOperation/doInternal()   flashx extLayoutoperationsInsertTextOperation.as:196]
     at flashx.textLayout.operations::InsertTextOperation/doOperation()   flashx extLayoutoperationsInsertTextOperation.as:223]
     at flashx.textLayout.edit::EditManager/doInternal()       flashx extLayouteditEditManager.as:723]
     at flashx.textLayout.edit::EditManager/doOperation()      flashx extLayouteditEditManager.as:603]
     at flashx.textLayout.edit::EditManager/flushPendingOperations()    flashx extLayouteditEditManager.as:873]
     at flashx.textLayout.compose::StandardFlowComposer/updateToController()  flashx extLayoutcomposeStandardFlowComposer.as:554]
     at flashx.textLayout.compose::StandardFlowComposer/updateAllControllers() flashx extLayoutcomposeStandardFlowComposer.as:517]


    tf.interactionManager.selectRange(tf.textLength, tf.textLength);

    TypeError: Error #1009: 无法访问空对象引用的属性或方法。
     at flashx.textLayout.edit::ParaEdit$/insertText()       flashx extLayouteditParaEdit.as:54]
     at flashx.textLayout.operations::InsertTextOperation/doInternal()   flashx extLayoutoperationsInsertTextOperation.as:196]
     at flashx.textLayout.operations::InsertTextOperation/doOperation()   flashx extLayoutoperationsInsertTextOperation.as:223]
     at flashx.textLayout.edit::EditManager/doInternal()       flashx extLayouteditEditManager.as:723]
     at flashx.textLayout.edit::EditManager/doOperation()      flashx extLayouteditEditManager.as:603]
     at flashx.textLayout.edit::EditManager/flushPendingOperations()    flashx extLayouteditEditManager.as:873]
     at flashx.textLayout.compose::StandardFlowComposer/internalCompose()  flashx extLayoutcomposeStandardFlowComposer.as:711]
     at flashx.textLayout.compose::StandardFlowComposer/composeToPosition()  flashx extLayoutcomposeStandardFlowComposer.as:837]

    报错在ParaEdit.as,sibling为null
       var sibling:FlowElement = textFlow.findLeaf(absoluteStart);
       var siblingIndex:int;
       var paragraph:ParagraphElement = sibling.getParagraph();

    问题貌似是因为EditManager.as里insertText方法中的Event.ENTER_FRAME,这个下一帧处理好像会导致快速输入删除时候的不同步
        if (captureLevel == 0 && origOperationState == null && controller && controller.container && allowDelayedOperations)
        {
         enterFrameListener = controller.container;
         enterFrameListener.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 1.0, true);
        }
        else
         flushPendingOperations();

    我的解决方法是同步处理 不让他下一帧处理 设置 EditManager(tf.interactionManager).allowDelayedOperations = false;

    问题解决 具体为什么 还不是很清楚,先这么用着吧,如果有大神知道,希望可以交流

  • 相关阅读:
    基于BGP/EVPN控制平面的VXLAN anycast-VTEP anycast-gateway基本配置
    NetworkManager配置VRF
    IBGP Segment Routing AIGP属性
    EBGP segment routing
    CentOS8创建网桥
    F5 HTTP response body rewrite
    OSPF Segment Routing和MPLS基本配置
    L2TP 和 IPsec over L2TP
    nmap
    LINUX DNS客户端 解析域名慢的问题。
  • 原文地址:https://www.cnblogs.com/xbglbc/p/3813498.html
Copyright © 2020-2023  润新知